2013-12-18 81 views
0

我試圖使用正則表達式來匹配特定字符,只有當它不是直接與某個字符相鄰時。 (適用於Calibre的電子書)正則表達式匹配不包含特定字符的字符

具體而言,我想匹配不在句子末尾的所有,這意味着它們將位於普通字符之間,而不是角括號或空格。我認爲」[^<]會起作用,但是它會選擇引號和下一個字符,而不僅僅是字符本身。我也不確定如何做OR來檢查空間。我假設它會像」[^<]|[^ ]那樣,但那也不對。

這裏是我想匹配的內容示例:

旁邊的尖括號: <p class="calibre1">「I」m tired!」</p>

除了空間:<p class="calibre1">「I」m tired!」 he said</p>

僅在I」m引號應選擇(而只有引號本身)

對不起,如果有明顯的答案,但我一直在閱讀Python的正則表達式do並且我無法弄清楚。 :(

回答

4

您或許可以使用負前瞻(?! ...)這樣的:

」(?!<) 

,除非它後跟<這將匹配

要添加的空間...

」(?![< ]) 

那一個將匹配,除非接着是<或空格。

1

使用negative-lookahead

regex = r '"(?!<|\s)' 

|手段 「或」
\s意味着空白

你並不需要捕捉,因爲你知道你唯一匹配"

或者,您可以使用字符類而不是or,即:[<\s]

相關問題