簡體   English   中英

如何從正則表達式組中排除一個字符?

[英]How to exclude a character from a regex group?

我想從字符串(python)中除去連字符之外的所有非字母數字字符。 如何更改此正則表達式以匹配除連字符以外的任何非字母數字字符?

re.compile('[\W_]')

謝謝。

你可以使用一個否定的字符類代替:

re.compile(r"[^a-zA-Z0-9-]")

這將匹配不在字母數字范圍或連字符中的任何內容。 根據您當前的正則表達式,它也匹配下划線。

>>> r = re.compile(r"[^a-zA-Z0-9-]")
>>> s = "some#%te_xt&with--##%--5 hy-phens  *#"
>>> r.sub("",s)
'sometextwith----5hy-phens'

請注意,這也替換了空格(可能肯定是你想要的)。


編輯: SilentGhost建議使用量詞處理引擎可能更便宜,在這種情況下,您可以簡單地使用:

re.compile(r"[^a-zA-Z0-9-]+")

+將簡單地導致連續匹配的字符的任何運行同時匹配(並被替換)。

\\w匹配字母數字,添加連字符,然后否定整個集合: r"[^\\w-]"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM