2015-09-01 16 views
0

当使用正则表达式从文本中提取单词时,任何人都知道处理撇号的方式吗?我需要一个正则表达式来处理从文本中提取单词时的撇号

>>> import re 
>>> s = re.compile(r"\b[A-Za-z0-9_\-]+\b") 
>>> s.findall("I don't know Sally's 'special' friend.") 
['I', 'don', 't', 'know', 'Sally', 's', 'special', 'friend'] 

期望的结果:

['I', "don't", 'know', 'Sally', 'special', 'friend'] 

This discussion介绍如何查找完整的单词,但不与撇号处理。

+0

http://stackoverflow.com/a/28058612/1400768 – nhahtdh

回答

2
s = re.compile(r"(?:^|(?<=\s))[A-Za-z0-9_'\-]+(?=\s|$|\b)") 

使用此代替\blookarounds将为你工作。参见演示。

https://regex101.com/r/sS2dM8/25

+0

感谢。这会产生一个非常接近的结果:'['I','不要','知道','Sally',''特殊'“]' – Bill

+0

尽管失去了最后一个词('朋友')! – Bill

+0

@Bill https://regex101.com/r/sS2dM8/26现在它不会失去 – vks

相关问题