用撇号选择单词的正则表达式是什么?

时间:2017-10-29 16:02:23

标签: python regex

用撇号选择单词的正则表达式是什么?

这是一个单词列表示例:

above    
dog    
rain    
you've    
it's

我的代码是:

text_data=re.sub('[^0-9a-zA-Z\']+', " ", text_data)

这个正则表达式保留了撇号,但它在撇号之后将字符分成另一个单词。例如,you've变为you've

3 个答案:

答案 0 :(得分:1)

您可以使用撇号选择整个单词:

(\w+'\w+)

这会检查多个单词字符,撇号,然后是单词的其余部分。请注意,这个IGNORES案例中撇号出现在单词的开头或结尾,如blah',我想这就是你想要的。

[编辑] 您当前的正则表达式与撇号词不匹配,顺便说一下 - 它们之间是匹配的空格。我推荐像this这样的工具,这样您就可以在编辑正则表达式时看到匹配的内容。

答案 1 :(得分:0)

以下正则表达式返回匹配单词列表:

>>> re.findall("[\w]+'[\w]+", "Asdasdasd  as'da sdas sa asdas'asdsa")
["as'da", "asdas'asdsa"]

答案 2 :(得分:0)

不要重新发明轮子。实际上,不需要正则表达式:

string = """
above    
dog    
rain    
you've    
it's
"""

words = [word 
        for word in string.split() 
        if "'" in word]
print(words)
# ["you've", "it's"]