我将python与re模块一起用于正则表达式
我想删除字符串中除数字和字符以外的所有字符。
为了实现这一点,我使用子函数
代码代码段:-你知道吗
>>> text="foo.bar"
>>> re.sub("[^A-Z][^a-z]","",text)
'门框'
我想知道为什么上面的表达式去掉了“o.”?你知道吗
我不明白为什么它会去掉“o”
有人能解释一下这背后是怎么回事吗?你知道吗
我知道纠正这个问题的方法是
>>> re.sub("[^A-Z ^a-z]","",text)
“foobar”
提前谢谢
Tags:
详细说明:
[^A-Z]
表示除大写字母A到Z以外的所有字符,foo.bar
中的第二个o
不是大写字母,因此它实际上匹配所有字符食品酒吧在这一点上是匹配的。你知道吗然后添加
[^a-z]
,以便查找一个不是小写的字符,只有点匹配。你知道吗将这两个字符组合起来,您将查找后跟非小写字符的非大写字符,以便匹配
o.
解决办法就是伊格纳西奥提出的。你知道吗
因为
o
匹配[^A-Z]
,.
匹配[^a-z]
。你知道吗正确的解决方案是
[^A-Za-z0-9]
。你知道吗需要实现的一个非常重要的方面是
[^A-Z][^a-z]
表示两个字符(每个字符组一个),而[^A-Za-z]
仅表示一个。你知道吗相关问题 更多 >
编程相关推荐