據我所知,xanatos的答案是正確的。我試着去了解正則表達式,所以這裏說到:
"[^"~]+"([^~]|$)
您可以測試我們的正則表達式,並在http://www.regexpal.com/
1.與單件起到更好的理解)單個字符
「
第一種模式是文字字符。由於沒有相對立場的陳述,它可能發生在任何地方。
2.)在字符類
[^「〜]
下一個表達式是[] -bracket,這是一個字符集,它定義字符的數量,這可能會在下一步。它是一個單個字符的佔位符。所以讓我們看看裏面,允許其內容:
^「〜
字符類的定義開始的插入符號(^),這是一個特殊字符,在打開方括號後鍵入一個插入符號將取消字符類別,因此它是「倒置的」:跟隨的所有內容,與類別表達式不匹配,匹配且是有效字符。在這種情況下,每個字面字符都是可能的,除了兩個被排除的字符:「或〜」。
3.)的特殊字符
+
下一個表達式,一個加號,告訴引擎嘗試匹配前述令牌一次或多次。 所以定義的字符類應該重複一次或多次以匹配給定的表達式。
4.)單個字符
「
要匹配,表達式應該進一步含有一種進一步撇號,這將是對應於撇號1中的第一個),因爲在字符類(2),因此(3)不允許一個撇號。
5.)一個環視
([^〜] | $)
這裏要檢查的第一個結構是()-bracket。這被稱爲「Lookaround」。 它是一種特殊的羣體。 Lookaround匹配一個位置。它不擴展正則表達式匹配。 所以這意味着這部分不會嘗試在表達式 中找到任何特定字符,而不是將它們本地化。
本地化需求有兩個條件,它們通過管道符號進行邏輯OR連接: 因此,匹配表達式的下一個字符可以是 [^〜]所有類中的單個字符除了字符〜 或 $行末(或單詞,如果不使用多行模式正則表達式引擎)
我會嘗試編輯我的答案更好的格式,因爲這是我的第一篇文章,我首先必須檢查這是如何工作的..:)
更新: 以「檢測」在該行的前/結束一個星/星,你必須做以下幾點:
首先,它是一個特殊的角色,所以你有一個反斜槓轉義:*
要定義的位置,你可以使用:
整體表現將是:
^*的表達在 開始尋找一個*前面的正則表達式的最後行$ *在終端需求的* 。
....你的情況,你可以在最後一個字符類中添加*檢測到底有*:
([^〜] | $ | $ *)
,並強制*最後,刪除其他條件:
($ *)
PS: (不知我的正則表達式是在格式化的發動機吞了,所以我的更新是錯誤的...)
是否[參考](http://www.regular-expressions.info/reference.html ) 幫幫我? – Corak