2016-08-24 83 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