正则表达式在一行的特定列中查找数据

时间:2009-02-17 16:45:21

标签: regex notepad++

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

^.{x}[data to find]

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

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

2 个答案:

答案 0 :(得分:7)

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

正如Alan Moore

中的the comments所述
  

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

请参阅“How to use regular expressions in Notepad++ (tutorial)”(乘法运算符)


原始答案(2009年2月)

我刚刚查看了最新的Notepad ++ 5.2及其regexp feature

我确认它没有任何repetition operator {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 ++ regexp,.与eol字符(\r\n不匹配)


在评论中提及Asmor

  

Notepad ++,它的所有强大功能,使用Scintilla并继承Scintilla的正则表达式处理,其有限的regex features

     

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

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

  

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

答案 1 :(得分:0)

如果你有权访问它,awk更适合这种任务。

它看起来不像记事本++我可以找到的文档中有{x}功能。