在 Notepad++ 中查找包含 123985 和 Positive_Adjustment 的行

Find lines containing 123985 and Positive_Adjustment in Notepad++

我试图在文件中找到特定数字和特定字符串出现的行,它们之间有一组任意字符(换句话说,它们各自出现在行中的任何位置,而不是彼此相邻*) .

*编辑: 澄清一下,我只是声明两个字符串值不会相邻。我并不是说这是正则表达式的要求。找到123985Positive_Adjustment就ok了。只是不会,因为没有那样的台词。如果我的问题具有误导性,我们深表歉意。

在搜索 google 这个问题后,我尝试了很多正则表达式,但 none 完全满足了我的需要。我试过的一个例子是...

123985.*Positive_Adjustment

(搜索那个数字,然后搜索任意数量的字符,然后搜索那个字符串)

任何人都可以建议使用一个正确的正则表达式来在 Notepad++ 中实现这一点(在撰写本文时是最新的)

一个有效匹配的例子是....

15/02/12|abc|123985|G1|6|12:04:29|19088829.96|Positive_Adjustment||||299243.70|||0.00|299243.70|15/02/12|||10.9.210.0||5001|0.0000|||||||||||||||||||||||||

in other words they each occur anywhere in the line, not next to each other

^.*123985.+Positive_Adjustment.*$

这个简单的正则表达式应该可以为您完成。

您可以描述不是您搜索的数字或单词的部分。结果有点长但效率很高(因为它很快就失败了):

^(?:[^1\n]+|1(?!23985))*+123985(?:[^P\n]+|P(?!ositive_Adjustment))++Positive_Adjustment.*

或更长更快:

^[^1\n]*+(?:1(?!23985)[^1\n]*)*+123985(?>[^P\n]+|P(?!ositive_Adjustment)[^P\n]*)(?:P(?!ositive_Adjustment)[^P\n]*)*+Positive_Adjustment.*