2016-08-24 42 views
-1

这里是演示http://www.regexplanet.com/cookbook/ahJzfnJlZ2V4cGxhbmV0LWhyZHNyDwsSBlJlY2lwZRjrstAmDA/index.html正则表达式是匹配报价的时候,我不希望它

链接选择Java之一,看看输入。您可以在引号或不带引号中提供参数。但是,当正则表达式捕获这些组时,我不希望它捕获括在引号内的参数的引号。这很令人困惑,因为引号不在括号内,所以我不知道它们为什么被捕获。

我该如何解决这个问题?

编辑:

为了澄清,我所要的输出是这样的:

hello-world 
hi 
this is \" 
\\ 
sparta 
+0

请发表您为例e和预期的输出在这里 – rock321987

+0

Java不支持'branch reset(?|)'(_if支持,这太容易了)..我们可以使用lookbehead和lookahead,但是会有一些额外的数据被选中 – rock321987

回答

0

如果你不想被抓到双引号,那么你需要避免他们使用零不匹配宽度断言 - lookarounds:

(?<=")(?!\s+")(?:[^\\"]+|\\")+(?=")|[^"\s]+ 

Live demo