需要关于以下正则表达式的帮助吗

2024-04-26 10:04:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我将python与re模块一起用于正则表达式 我想删除字符串中除数字和字符以外的所有字符。 为了实现这一点,我使用子函数

代码代码段:-你知道吗

>>> text="foo.bar"

>>> re.sub("[^A-Z][^a-z]","",text)

'门框'

我想知道为什么上面的表达式去掉了“o.”?你知道吗

我不明白为什么它会去掉“o” 有人能解释一下这背后是怎么回事吗?你知道吗

我知道纠正这个问题的方法是

>>> re.sub("[^A-Z ^a-z]","",text)

“foobar”

提前谢谢


Tags: 模块方法字符串代码textrefoo表达式
3条回答

详细说明:

[^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]仅表示一个。你知道吗

相关问题 更多 >