2014-07-23 47 views
0

我試圖匹配這些字符串:正則表達式雙引號內的文字

" ... "文本雙引號內

' ... '文本單引號內

" ' "可以有單引號內

" \" "可以有雙引號逃脫

但是沒有牛逼這些:

' " '不是單引號雙引號

" " "雙引號

內沒有雙引號

'''單引號內的單引號 - 單引號只能包含內部

我已經來到文與以下正則表達式:

['"](?(["])[^\"-"][\w])['"] 

但我不工作。

+2

提供樣品輸入數據和您的預計相符 – anubhava

+0

什麼裏面單引號中的字符串撇號? –

+1

爲什麼在單引號中沒有雙引號?這是單引號的主要用法之一,因此您可以在不轉義的情況下使用其他類型的引號。 – Qtax

回答

4

平時要匹配逃逸報價在C風格的語言(和單引號爲JS),你可以使用:

"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*' 
+0

它不適用於'你好' –

+0

它工作得很好。現場示例:http://regex101.com/r/kZ7aN4/1 – Qtax

+0

你說得對,我要測試更多 –

1

你可以使用這樣的事情:

"(?:[^"\\]|\\.)*?"|'(?:[^\\"']|\\.)*?' 

我你已經遵循了你所提出的,但我想知道它(爲什麼在單引號內沒有雙引號?我沒有在單引號內使用單引號,儘管你對此沒有提及)。

無論哪種方式,這裏是an example

+0

它不適用於第二種情況,即單引號內的文本 –

+0

我改變了轉義,因爲我一直在粗心大意,但是甚至在它用單引號工作正常之前,看到這個例子 –

+0

它似乎工作,但我不明白爲什麼如果允許的令牌是\「,那麼正則表達式是:」\\所以相反? –

相關問題