我试图创建一个正则表达式来匹配一个有或没有撇号的单词。在末尾。对于下面的例子,我想添加一个正则表达式来用正则表达式替换撇号以匹配撇号' s'或只是一个'。
Philip K Dick's Electric Dreams
Philip K Dicks Electric Dreams
我到目前为止所尝试的内容如下,但我没有让它正确匹配。这里的任何帮助都很棒。谢谢!
Philip K Dick[\'[a-z]|[a-z]] Electric Dreams
答案 0 :(得分:1)
只需在正则表达式模式中将撇号设置为可选。
像这样:[a-zA-Z]+\'?s
,
例如,使用您的测试字符串:
import re
s1 = "Philip K Dick's Electric Dreams"
s2 = "Philip K Dicks Electric Dreams"
>>> re.findall("[a-zA-Z]+\'?s", s1)
["Dick's", 'Dreams']
>>> re.findall("[a-zA-Z]+\'?s", s2)
['Dicks', 'Dreams']
答案 1 :(得分:0)
您可以使用正则表达式(\w+)'s
来表示's
后跟的任何字母。然后你可以用s
替换掉那个单词。
>>> s = "Philip K Dick's Electric Dreams"
>>> re.sub(r"(\w+)'s", r'\1s', s)
'Philip K Dicks Electric Dreams'