TLDR:我希望捕获引号之外的所有内容,但在Java中使用此正则表达式\”时似乎无法做到这一点|“(?:\”|[^"])*”|([^"]+)在http://myregexp.com/等网站上运行时。有人能指出我做错了什么吗?
你好,我目前正在尝试分析一个.java源代码,并将引号之外的所有内容提取为字符串(忽略转义引号)。
例如,在以下字符串中:
这应该被捕获为“not this”和“not this”。
我应该能够用,模式和匹配器,找到“这应该被捕获”,“和”,“。
我目前拥有的是**"[^"]+\”|([^"]+),如果文档中有一对相等得“”,则此方法很有效,但只要有一个转义符,此方法就会中断.
在一个在线的regex测试器上,我试过\”|“(?:\”|[^"])*”|([^"]+)**它似乎完全符合我的要求,但当我在Java中尝试时,它并没有。
2条答案
按热度按时间62lalag41#
对于您当前的任务,您似乎可以使用匹配双引号字符串文字的模式来 split 字符串:
请参阅Java demo:
图案详情:
\\s*
- 0+空格\"
-双引号[^\"\\\\]*
- 0+除"
和\
以外的字符(?:\\\\.[^\"\\\\]*)*
- 0+序列:\\\\.
-\
和除换行符字符以外的任何字符[^\"\\\\]*
- 0+除"
和\
以外的字符\"\\s*
-一个"
和0+空格7kqas0il2#
这是一个相对较短的正则表达式模式匹配表达式。