我想查找不匹配特定字符序列的字符串。例如:Quick Python Regex問題:匹配否定字符集
像
REGEX = r'[^XY]*'
我想尋找一個有任意數量的字符,除了一個X和Y彼此相鄰串...正則表達式上面並沒有因爲工作它會分別阻止X和Y.
我想查找不匹配特定字符序列的字符串。例如:Quick Python Regex問題:匹配否定字符集
像
REGEX = r'[^XY]*'
我想尋找一個有任意數量的字符,除了一個X和Y彼此相鄰串...正則表達式上面並沒有因爲工作它會分別阻止X和Y.
如何:
if "XY" not in s:
print "matched"
else
print "not matched"
或者這是包含在一些較長的正則表達式?那麼也許你想要一個負前瞻表達:
REGEXP="...(?!XY)..."
編輯:固定錯字
有幾個方法可以做到這一點。
^(?!.*XY).*$
先行表達試圖將字符串中的任何一個相匹配序列XY
。這是一個負面超前,所以如果它找到一個,匹配嘗試失敗。否則.*
繼續並消耗整個字符串。
^(?:(?!XY).)*$
這一個多次匹配任何字符(.
),但先行確認後才字符是不是XY
序列的開始。
^(?:[^X]+|X(?!Y))*$
多次匹配一個或多個任意字符,除了X
,或者X
如果它不跟Y
。
對於前兩個正則表達式,如果它們可能是源字符串中的換行符,則必須應用DOT_ALL修飾符。第三個不需要,因爲它使用否定字符類 - [^X]
- 而不是一個點。
我不太瞭解python正則表達式,但你應該有什麼工作。或者嘗試用'+'替換`*` – 2011-01-26 22:42:03
我剛剛在http://nmichaels.org/regular.py中檢查過,它似乎工作正常。你能給我們一個字符串來測試它嗎? – nmichaels 2011-01-26 22:43:20