python 3中,正则表达式为同一字符串返回不同的结果
我有一个这样的代码python 3中,正则表达式为同一字符串返回不同的结果,python,regex,python-3.x,Python,Regex,Python 3.x,我有一个这样的代码 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 si
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
我试图编写一个代码,消除除撇号以外的所有标点符号,我不明白为什么正则表达式会对同一组字符串返回不同的结果。为什么会发生这种情况?第一个字符串是右单引号,第二个是撇号。您可以检查字符值第一个字符串是右单引号,第二个是撇号。您可以检查字符值字符串不相同
s
包含”
,而b
包含”
<代码>[^a-zA-Z']匹配任何不是a-Z
、a-Z
、'
或
(空格)的内容。这与'
匹配,在s
中,字符串不相同
s
包含”
,而b
包含”
<代码>[^a-zA-Z']匹配任何不是a-Z
、a-Z
、'
或
(空格)的内容。这与'
相匹配,正如其他人所说,s
和b
是不同的,因为它们都包含不同的撇号,'
和'
。这很容易检查:
>>> s = "farmer’s boy of s...=--ixpence."
>>> b = "farmer's boy of s...=--ixpence."
>>> s == b
False
>>> print([x for x in s if x not in b])
['’']
这表明s
包含'
撇号,但b
不包含。为确保只比较相等的字符串,您需要事先进行初步检查:
s = "farmer’s boy of s...=--ixpence."
b = "farmer's boy of s...=--ixpence."
if s == b:
print("Both strings are equal")
# Rest of code here
在执行其他操作之前,检查
s
和b
的值是否相同 正如其他人所说,s
和b
是不同的,因为它们都包含不同的撇号,'
和'
。这很容易检查:
>>> s = "farmer’s boy of s...=--ixpence."
>>> b = "farmer's boy of s...=--ixpence."
>>> s == b
False
>>> print([x for x in s if x not in b])
['’']
这表明s
包含'
撇号,但b
不包含。为确保只比较相等的字符串,您需要事先进行初步检查:
s = "farmer’s boy of s...=--ixpence."
b = "farmer's boy of s...=--ixpence."
if s == b:
print("Both strings are equal")
# Rest of code here
在执行其他操作之前,检查
s
和b
的值是否相同 那些字符串不一样。仔细看那些字符串<代码>“与”
>>“s的农民的男孩..=--ixpence.”===“s的农民的男孩..=--ixpence.”不一样。
哦,哇,这太愚蠢了。。。我为此挣扎了两个小时。。。。这在我的PyCharm字体上不明显!谢谢tho@EricKim您可能应该先检查s
和b
,类似于如果s==b:
,以确保两个字符串相同。这些字符串不相同。请仔细查看这些字符串<代码>“与”
>>“s的农民的男孩..=--ixpence.”===“s的农民的男孩..=--ixpence.”不一样。
哦,哇,这太愚蠢了。。。我为此挣扎了两个小时。。。。这在我的PyCharm字体上不明显!谢谢tho@EricKim您可能应该先检查s
和b
,类似于如果s==b:
,以确保两个字符串相同。