0

我正在尝试在以下示例中使用 Notepad++ 的 find & replace 正则表达式:

 3   733xxxx (-1)
 3  1521xxxx (-1)
 3  1521xxxx (-1)

我怎样才能保持以下不匹配?

733xxxx
1521xxxx
1521xxxx

我尝试使用以下表达式:

^(.* \(-1\)).*$
^(\(-1\))$

第一个匹配一切,第二个:什么都没有。

谁能指出我正确的方向?

4

1 回答 1

2

有几种方法可以解决这个问题:

  • 用空字符串替换"^ *\d+ +"and " *\(-1\)$"(引号是为了清楚起见)(2个步骤)

  • 替换"^ *\d+ +(\d+).*$"$1

\d是一个简写字符类,它匹配任何[[:digit:]]匹配项(数字)。(Notepad++ 使用 Boost 正则表达式)。从我的测试来看,它似乎可以匹配 Unicode numeric digits,但我认为它在您的应用程序中并不重要。

^ *\d+ +部分将匹配中间数字之前的文本。

 *\(-1\)$匹配空格和(-1)行尾的。

对于^ *\d+ +(\d+).*$,正则表达式将匹配整行,然后我们将只保留我们想要的部分,即中间的数字。(()不像 in 那样转义 *\(-1\)$)是一个捕获组,它捕获子模式匹配的文本。我们不关心捕获的数字后面的文本,所以我们.*只使用匹配所有内容。

于 2013-05-04T14:01:05.557 回答