【发布时间】:2017-06-11 10:23:01
【问题描述】:
TLDR:我希望捕获引号之外的所有内容,但我似乎无法在 Java 中使用此正则表达式 \"|"(?:\"|[^"])*" |([^\"]+) 虽然它适用于 http://myregexp.com/ 等网站。谁能指出我做错了什么?
您好,我目前正在尝试分析 .java 源代码并将引号之外的所有内容提取为字符串(忽略转义引号)。
例如,在这个字符串中:
这应该被捕获“not this”和“not \"this\" either”。
我应该能够使用模式和匹配器找到“This should be capture”、“and”、“.”。
我目前拥有的是\"[^\"]+\"|([^\"]+),如果文档中有一对相等的“”,则效果很好但一旦有逃跑者就会中断。
在在线正则表达式测试仪上,我尝试了 \"|"(?:\"|[^"])*"|([^\"]+) 这似乎完全我正在寻找,但是当我在 Java 中尝试时它没有。
【问题讨论】:
-
试试
List[] res = s.split("\\s*\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\"\\s*"); -
这很好用,非常感谢!我将尝试了解正则表达式的工作原理,并将其应用于已注释的源代码(例如 /* /、/* **/ 和 // \n)。
-
向我们展示您的实际 Java 代码 -- 理想情况下也是失败的测试方法。
-
请注意,
/*...*/的正则表达式类似于 Java 中的 cmets 是 posted by me here。