【发布时间】:2014-07-05 05:23:19
【问题描述】:
使用记事本++ v6.5.5
我有以下正则表达式:
((?<=,)[,\ \/\-#\w]{2,}(?=,[0-9]))
我正在尝试在以下行中捕获文本 Dow Corning / Molykote 111, Valve Lubricant:
111,Dow Corning / Molykote 111, Valve Lubricant,25.000000,Y,46.010000,1,1 MSRP
它捕获得很好,但我似乎无法引用替换组。
我尝试了以下方法:
"$0"
"$1"
"$2"
"$3"
"\0"
"\1"
"\2"
"\3"
\1 = "\1"
我还把括号移到了前瞻和后瞻的内部:
(?<=,)([,\ \/\-#\w]{2,})(?=,[0-9])
我试图用以下乱码替换文本:
ansfnasflknsf
什么都没有被替换。不知道发生了什么,真的。我可以用纯文本很好地使用查找/替换,但不能使用正则表达式。
啊,刚试过v6.4.5还是不行。
如果有人让它工作,他们能告诉我他们使用的是什么版本吗?
以下正则表达式更适合捕获我需要的内容:
((?<=,)(?<!\ )[,\ \/\-#\w]{2,}(?=,[0-9\.]+))
【问题讨论】:
-
替换后你想得到什么?
-
您使用的是什么版本的notepad++?仅使用 Find 时你甚至得到匹配吗?
-
我只想用引号括起来。但是当我使用正则表达式时,它并没有取代任何东西。我使用的是 6.5.5 版。是的,我只使用 find 时得到匹配。
-
前瞻和后瞻是非捕获结构。它们内部的组确实捕获了一些东西,但它们不对应于输入中的任何文本,因为它们是零长度的。
-
好吧,it's working fine on my 6.5.2。无法用您提供的线路重现您的问题。确保您的光标位于开头并且您正在寻找“向下”。