我有一个这样的代码
import re
s = "farmer’s boy of s...=--ixpence."
b = "farmer's boy of s...=--ixpence."
s_replaced = re.sub("[^a-zA-Z' ]+", '', s)
b_replaced = re.sub("[^a-zA-Z' ]+", '', b)
print(s_replaced)
print(b_replaced)
>>> farmers boy of sixpence
>>> farmer's boy of sixpence
我试图编写一个代码,消除除撇号以外的所有标点符号,我不明白为什么regex会对同一组字符串返回不同的结果。为什么会这样?你知道吗
正如其他人所说,
s
和b
是不同的,因为它们都包含不同的撇号,’
和'
。这很容易检查:这表明
s
包含'’'
撇号,但b
不包含。为了确保只比较相等的字符串,您需要事先进行初步的==
检查:它在执行其他操作之前检查
s
和b
的值是否相同。你知道吗字符串不一样。你知道吗
s
包含’
,而b
包含'
。[^a-zA-Z' ]
匹配任何不是a-z
、A-Z
、'
或(空格)的内容。它匹配
’
,它位于s
。你知道吗第一个字符串是右单引号,第二个是撇号。您可以检查字符值here
相关问题 更多 >
编程相关推荐