使用Notepad ++和regex,我需要找到一个大(3MB)文本文件中的所有行,其中包含如下模式: “找不到仓库商店:12和邮政编码55555”
仓库代码后面的数字:可以是1位或2位数,而邮政编码后面的数字总是一个空格,后跟5个字符的邮政编码。
我想选择包含“warehouseid:__和zipcode _____”的所有子字符串,所以我最终会得到一个像这样的子字符串列表: “仓库:14和邮政编码44444” “仓库:5和邮政编码44444” “仓库:44和邮政编码44444” “仓库:44和邮政编码44444” “仓库:44和邮政编码44444”
我开始的是这样的: ^(warehouseid:)。$
但现在我要选择以“仓库”开头的下n个字符
你可以用
Find What: .*(warehouseid:\h*\d{1,2})\b.*(zipcode\h*\d{5})\b.*|(.+)\R*
Replace With: (?{1}$1 and $2:)
细节
.*
- 除了换行符之外的任何0 +字符,尽可能多(warehouseid:\h*\d{1,2})
\b
- 字边界,以确保只有1或2位数被捕获到第1组.*
- 除了换行符之外的任何0 +字符,尽可能多(zipcode\h*\d{5})
\b
- 字边界,以确保只有5位数被捕获到第2组.*
- 除了换行符之外的任何0 +字符,尽可能多|
- 或(.+)\R*
- 不符合标准的整行。(?{1}$1 and $2:)
替换模式取代了Group 1,and
和Group 2值,或者只删除了与标准不匹配的整行。
这找到整行并给你“仓库:__和zipcode _____”作为一个组(选择):
"Could not find store with (warehouseid: \d{1,2} and zipcode \d{5})"
检查解释here。
如果您想将仓库“XX”和邮政编码“XXXXX”作为组,则使用@WiktorStribiżew解决方案。