3 回答

TA貢獻1851條經驗 獲得超3個贊
您的問題實際上只是一個錯字,因為您忘記轉義像$and之類的正則表達式元字符^。但是,我建議另一種方法re.split:
a = 'aaa@@aa;aa$$aaa;aa><aaa;aa....aaa;aaa^aa'
parts = re.split(r'[^@$<>\^]+', a)[1:-1]
print(parts)
這里的想法是將字符串拆分為除您要保留的字符之外的任何字符簇。上面的腳本打?。?/p>
['@@', '$$', '><', '^']

TA貢獻1831條經驗 獲得超9個贊
您可以嘗試以下方法:
>>> a='aaa@@aa;aa$$aaa;aa><aaa;aa....aaa;aaa^aa'
>>> match=re.findall('@{2}|[$]{2}|><|[.]{4}|\^', a)
>>> match
['@@', '$$', '><', '....', '^']
編輯:當您將特殊字符括在括號內時,它失去了意義,例如,[.]將匹配該.字符。

TA貢獻1847條經驗 獲得超11個贊
您的表達似乎很好,缺少一些東西:
import re
string = """
aaa@@aa;aa$$aaa;aa><aaa;aa....aaa;aaa^aa
aaa@&@aa;aa$&$aaa;aa<>aaa;aa...aaa;aaaaa
"""
expression = r'@@|\$\$|><|\^|\.\.\.\.'
matches = re.findall(expression, string)
print(matches)
輸出
['@@', '$$', '><', '....', '^']
添加回答
舉報