6

我正在尝试在文档中搜索特定列的数据。我正在尝试使用:

^.{x}[data to find]

其中 x 是我想要的列数 - 1。

我不确定我是否做错了什么,或者我的正则表达式引擎是否不支持该语法。如果有帮助,我正在尝试使用 Notepad++。

4

2 回答 2

7

2013-2014 年更新(4-5 年后)

正如Alan Moore评论中提到的

Notepad++ v6.x通过 PCRE 库提供真正的正则表达式支持

请参阅“如何在 Notepad++ 中使用正则表达式(教程) ”(乘法运算符)


原始答案(2009 年 2 月)

我刚刚检查了最新的 Notepad++5.2 及其正则表达式功能

我确认它没有任何重复运算符 {min,max}可以让您指定令牌可以重复多少次。

http://1.bp.blogspot.com/_RrGIVCQs3RU/SHbq1B0wYlI/AAAAAAAAALI/h21UEYMEivc/s400/np%2B%2Breplace.png

另一种选择是:

.... [repeat '.' as many time as the number of column you want] ...[data to find]

您不需要^:默认情况下,Notepad++ 正则表达式逐行应用,并且.不匹配 eol 字符(\r\n


正如Asmor在评论中提到的:

Notepad++ 的所有强大功能都使用了 Scintilla 并继承了 Scintilla 的正则表达式处理,但具有有限的正则表达式功能

您说“默认”正则表达式是逐行应用的。这意味着您可以以其他方式设置它,但据我所知(我求求您,请证明我错了!),没有办法制作多行正则表达式。

(我同意,这是一个主要限制)

Scintilla 的另一个限制是,^运算符实际上很重要,因为它将正则表达式锚定到行首。假设您想匹配第三列中的 3。您会想要^..3, 并且..33在第二个之后的任何列中匹配。

于 2009-02-17T17:56:17.607 回答
0

如果您可以访问它,Awk 更适合这种任务。

从我能找到的文档中看,notepad++ 似乎没有 {x} 功能。

于 2009-02-17T16:55:10.890 回答