我想創建一個RegEx,查找以單引號或雙引號開頭和結尾的字符串。Preg模式,忽略轉義字符
例如,我可以像本場比賽這樣的情況:
String: "Hello World"
RegEx: /[\"\'][^\"\']+[\"\']/
但是,出現問題時的報價出現字符串本身像這樣:
String: "Hello" World"
我們知道上面的表達式會不行。
我希望能夠做的,它有字符串本身內逃生,因爲這無論如何都會被要求的功能:
String: "Hello\" World"
現在我能拿出一個長期而複雜的表達一組以各種模式,其中之一是:
RegEx: /[\"\'][^\"\']+(\\\"|\\\')+[^\"\']+[\"\']/
但是這對我似乎過高,我認爲有可能是一個更短,更優雅的解決方案。
預期語法:
run arg1 "arg1" "arg3 with \"" "\"arg4" "arg\"\"5"
正如你所看到的,報價實際上只用於確保該字符串用空格算作一個字符串。不要擔心arg1
,我應該可以匹配未加引號的參數。
我會讓這更容易,參數只能用雙引號括起來。所以我已經從這個問題的要求中拿出了單引號。
我已經修改瑞Jarimba的例子:
/(?<=")(\\")*([^"]+((\\(\"))*[^"])+)((\\"")|")/
這已經佔到相當不錯大多數情況下,但有一個可以打敗這個最後一種情況:
run -a "arg3 \" p2" "\"sa\"mple\"\\"
第二個參數結束與\\"
這是一種傳統的方法在這種情況下,允許在嵌套字符串的末尾反斜槓,不幸的是,正則表達式認爲這是一個轉義報價,因爲模式\"
仍然存在於最後的模式。
劇本應該知道什麼是引用來改變的,巫婆可以算作開始/結束參數的基礎是什麼? – Peon
根據外部引號,是的,一個更大的字符串可以包含更多的引用嵌套字符串,因此reg ex必須能夠找到它們全部。如果嵌套字符串用單引號封裝,則任何內部雙引號不需要轉義,反之亦然。 – Flosculus
所以你正在尋找'第一'和'最後'引號之間的所有文本? – Peon