使用Notepad ++和regex,我需要找到一个大型(3MB)文本文件中的所有行,其格式如下:
“无法找到仓库存储:12和邮政编码55555”
仓库之后的数字:可以是1位或2位数,而邮政编码后面的数字总是一个空格,后跟5个字符的邮政编码。
我想选择包含“warehouseid:__和zipcode _____”的所有子字符串,所以我最终会得到一个像这样的子字符串列表:
“仓库:14和邮政编码44444”
“仓库:5和邮政编码44444”
“仓库:44和邮政编码44444”
“仓库:44和邮政编码44444”
“仓库:44和邮政编码44444”
我开始的是这样的:
^ (warehouseid:)。 $
但现在我要选择以“warehouseid”开头的下n个字符
答案 0 :(得分:1)
您可以使用
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:)
替换模式取代了第1组,and
和第2组值,或者只删除了与条件不匹配的整行。
答案 1 :(得分:0)
这会找到整行并将“仓库:__和zipcode _____”作为一个组(选择)给你:
"Could not find store with (warehouseid: \d{1,2} and zipcode \d{5})"
检查说明here。
如果您想将仓库“XX”和邮政编码“XXXXX”作为群组,请使用@WiktorStribiżew解决方案。