我正在尝试使用Notepad ++的find&替换为以下示例中的正则表达式:
3 733xxxx (-1)
3 1521xxxx (-1)
3 1521xxxx (-1)
我如何才能保持以下不匹配?
733xxxx
1521xxxx
1521xxxx
我尝试过使用以下表达式:
^(.* \(-1\)).*$
^(\(-1\))$
第一个匹配所有内容,第二个匹配:没有。
有人能指出我正确的方向吗?
答案 0 :(得分:2)
有几种方法可以解决这个问题:
用空字符串替换"^ *\d+ +"
和" *\(-1\)$"
(引号是为了清晰起见)(2个步骤)
将"^ *\d+ +(\d+).*$"
替换为$1
\d
是一个简写字符类,匹配任何[[:digit:]]
匹配(数字)。 (Notepad ++使用Boost正则表达式)。从我的测试来看,似乎 它可以匹配Unicode数字 ,但我认为它不会对您的应用程序产生太大影响。
^ *\d+ +
部分将匹配中间数字前面的文字。
*\(-1\)$
匹配空格和行尾的(-1)
。
对于^ *\d+ +(\d+).*$
,正则表达式将匹配整行,然后我们将只保留我们想要的部分,即中间的数字。 ()
(不像 *\(-1\)$
中那样进行转义)是一个捕获组,它捕获子模式匹配的文本。我们不关心捕获的数字后面的文本,因此我们只使用.*
来匹配所有内容。