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