[問題] 利用 regex 來不包含某些 pattern

作者: NaiveRed (天真紅)   2017-05-18 15:21:11
標題有點不知道怎下...
(使用 python3 )
我想要把字串中,英文和數字「以外」的字都取代掉,
但同時又要保留某些含有英或數字「以外」的 pattern。
大概像這樣: (保留 "+1" 和 "8+9")
s = "123天0氣0真0好+1 ab++cd8+9abcd"
new_s = re.sub("....","_",s)
# new_s = "123_0_0_0_+1_ab_cd8+9abcd"
排除英數以外的應該沒有什麼問題: re.sub("[^a-zA-Z0-9]+","_",s)
但沒辦法保留有英數字的pattern,查了一下似乎可以使用 (?!...)
(?!\+1|8\+9) 但仍舊沒有成功QQ
想問一下要怎麼改才對?
作者: uranusjr (←這人是超級笨蛋)   2017-05-18 16:42:00
這個單純用 re 會太麻煩, 而且我猜你真正的需求不太一樣可以這樣做 http://d.pr/1tENW
作者: zerof (貓橘毛發呆雕像)   2017-05-18 16:57:00
([^\d+|\W+|a-z]+| +)https://regex101.com/r/HoKPUk/1/+ 沒有抓到, 另外加 |\+[^0-9] 應該就可以了btw, 如果要 escape \t\r\n 之類的話把 | + 改成 |\s+

Links booklink

Contact Us: admin [ a t ] ucptt.com