作者NaiveRed (天真红)
看板Python
标题[问题] 利用 regex 来不包含某些 pattern
时间Thu May 18 15:21:11 2017
标题有点不知道怎下...
(使用 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
想问一下要怎麽改才对?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 101.13.149.191
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1495092073.A.0F9.html
※ 编辑: NaiveRed (101.13.149.191), 05/18/2017 15:21:46
1F:→ uranusjr: 这个单纯用 re 会太麻烦, 而且我猜你真正的需求不太一样 05/18 16:42
感谢~ 原来有 Scanner 这东西!!!在 python3 doc 没看到的说。
3F:→ zerof: ([^\d+|\W+|a-z]+| +) 05/18 16:57
5F:→ zerof: + 没有抓到, 另外加 |\+[^0-9] 应该就可以了 05/18 17:02
6F:→ zerof: btw, 如果要 escape \t\r\n 之类的话把 | + 改成 |\s+ 05/18 17:44
感谢~ 这网站真不错XD
※ 编辑: NaiveRed (134.208.56.141), 05/18/2017 19:28:32
※ 编辑: NaiveRed (134.208.56.141), 05/18/2017 19:50:47