我目前正在編寫我自己的語言,並有幾個不同類型的字符串文字,使用3個不同的符號來表示它們。他們在下面。正則表達式來匹配字符串文字
1)"Hello"
是一個簡單的字符串文字,編譯爲Hello
。
2)'Hello'
是一個壓縮字符串,用於訪問字符串壓縮函數。 (這將返回亂碼)
3)`Hello`
返回從每個字符代碼點
我試圖使用正則表達式來匹配像
`Hel"lo` 2* "Hel`lo"
一段代碼構成的數量,但不能來只有當第一個和最後一個字符相同時才匹配。我目前有
[`'\"]([\s\S]+|[^`'\"]+)['`\"]
但這並不會產生我想要的結果。
的例子預期的結果應該是
['`Hel"lo`', ' ', '2', '*', ' ', '"Hel`lo"']
但我的正則表達式返回
['`Hel"lo` 2* "Hel`lo"']
在你猜不透的情況下,我在正則表達式有點缺乏經驗,所以我會很感激任何幫助。
我假設這在Python正則表達式引擎中是一樣的,但是在一般的正則表達式中,可以使用'\ N'將表達式中稍後與匹配的括號和引用組合在一起,其中'N'是組號。所以像'([\'\「])。* \ 1'這樣的東西就會匹配'」test「'而不是''test'',因爲結尾與第一組沒有相同的匹配。 –
@cairdcoinheringaahing它需要一個捕獲組捕獲,所以你可以做'\ 1'來匹配那個捕獲組匹配的相同字符 – Artyer
@JonathanKuhn我已經嘗試過're.findall'在Python上的正則表達式和''「測試「,但它只是返回'[''']'(它只匹配第一個字符) –