【发布时间】:2021-03-29 15:11:21
【问题描述】:
目标:
我正在寻找一种方法来匹配或跳过单词,具体取决于它们是否被引号 ' '、guillemets « » 或括号 ( ) 包围。
预期结果示例:
-
len(re.findall("my word", "blablabla 'my word' blablabla"))应该返回0,因为从语言上讲my word=/='my word'因此不应该匹配; -
len(re.findall("'my word'", "blablabla 'my word' blablabla"))应该返回1,因为从语言上讲'my word'='my word'因此应该匹配; -
但这里有个问题——
len(re.findall("my word", "blablabla «my word» blablabla"))和len(re.findall("my word", "blablabla (my word) blablabla"))都应该返回1。
我的尝试:
我可以使用以下表达式(如果我错了,请纠正我),但我不知道如何实现它:(?<!\w)'[^ ].*?\w*?[^ ]'
我希望编写以下代码len(re.findall(r'(?<!\w)'+re.escape(myword)+r'(?!\w)', sentence))——我认为它的目的是去除标点符号——考虑到所有上述情况。
目前,我的代码在 'my word' 内部检测到 my word,这不是我想要的。
提前致谢!
【问题讨论】:
-
如果字符串是
blabla 'bla my word bla' blabla,匹配my word应该返回0还是1? -
确实很有趣的问题!它应该返回
1,因为整个文本中的my word没有直接被' '包围
标签: python regex regex-lookarounds quotation-marks