用于匹配撇号的正则表达式'话

时间:2017-09-18 22:46:23

标签: python regex

我试图创建一个正则表达式来匹配一个有或没有撇号的单词。在末尾。对于下面的例子,我想添加一个正则表达式来用正则表达式替换撇号以匹配撇号' s'或只是一个'。

Philip K Dick's Electric Dreams
Philip K Dicks Electric Dreams

我到目前为止所尝试的内容如下,但我没有让它正确匹配。这里的任何帮助都很棒。谢谢!

Philip K Dick[\'[a-z]|[a-z]] Electric Dreams

2 个答案:

答案 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'