Notepad ++ replace不适用于正则表达式


3

编辑

证明它应该有效:http//regexr.com?30pf2


我试图用a替换所有, 不在引号内的事件~

20,72275,Epidurography,1
21,72285,X-Ray C/T Spine Disk,1
22,72291,"Perc Vert/Sacroplasty, Fluor",1
23,72292,"Perc Vert/Sacroplasty, Ct",1

20~72275~Epidurography~1
21~72285~X-Ray C/T Spine Disk~1
22~72291~"Perc Vert/Sacroplasty, Fluor"~1
23~72292~"Perc Vert/Sacroplasty, Ct"~1

我的正则表达式就像一个魅力,但我似乎无法取代它找到的值。Notepad ++突出显示要替换的逗号,但在单击“ 替换”按钮时不进行任何更改就会传递。

找什么: (,)(?=(?:[^"]|"[^"]*")*$)

用。。。来代替: ~

我已经尝试过其他价值观思想~以某种方式保留,但其他所有角色或角色组合似乎都不起作用。希望这只是我的一些疏忽的结果。任何帮助,将不胜感激。

我正在使用Notepad ++ v6.1.1

谢谢! NotePad ++ ScreenShot

来自https://stackoverflow.com/questions/632475/regex-to-pick-commas-outside-of-quotes的正则表达式


我不知道6.1.1,但v.5.9.3不支持lookarounds的正则表达式使用。
Dennis


我刚刚更新了,你的正则表达式有效,但只有在点击时才有效Replace All。这听起来像个错误。
Dennis

对我来说,当我使用全部替换时它永远不会完成。它一直挂着,直到我不得不杀了它。使用Replace一次单步执行一次显示它在到达底部后返回到文件的顶部,但由于它从未替换任何内容,因此它会卡在无限循环中。我认为你这是一个错误,但我想确定。
Brandon Boone

我有9655行,所以我可能只是没有耐心。我会再试一次,等一下。谢谢你的帮助!
Brandon Boone

Answers:


4

这是由于Notepad ++的RegEx引擎(错误报告)中的错误

使用零宽度环视断言时,单击“ 替换”无效!

例如,在字符串上使用时,替换T(?=E)B展示相同的行为TEST

单击“ 全部替换”可用作解决方法,直到修复此问题。


0

目前管道|符号在notepad ++中不支持。

最新版本Notepad 10.1.1支持|RegEx


看看第23行是因为有人对你进行了投票。
Rob

@Rob:在我被低估后,我已经更新了我的答案。现在是最新的答案
Siva Charan

@SivaCharan - 请参阅我对Dennis的上述评论。
Brandon Boone
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.