微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用正则表达式的单词边界-无法提取所有单词

如何解决使用正则表达式的单词边界-无法提取所有单词

使用环顾四周来提取空白边界内的单词:

r'(?<!\S)Male-Cat(?!\S)'

参见在线正则表达式演示

  • (?<!\S) -空白或字符串开头必须立即显示在当前位置的左侧
  • Male-Cat -搜索的字词
  • (?!\S) -空格或字符串结尾必须立即显示在当前位置的右侧

由于(?<!\S)(?!\S)是零宽度的断言,因此不会占用空格,并且会找到连续的匹配项。

解决方法

我需要提取双Male-Cat

a = "Male-Cat Male-Cat Male-Cat-Female"
b = re.findall(r'(?:\s|^)Male-Cat(?:\s|$)',a)
print (b)
['Male-Cat ']

c = re.findall(r'\bMale-Cat\b',a)
print (c)
['Male-Cat','Male-Cat','Male-Cat']

我需要提取树时间Male-Cat

a = "Male-Cat Male-Cat Male-Cat"
b = re.findall(r'(?:\s|^)Male-Cat(?:\s|$)',a)
print (b)
['Male-Cat ',' Male-Cat']

c = re.findall(r'\bMale-Cat\b','Male-Cat']

可以通过第一种方法正确解析的另一个字符串:

a = 'Male-Cat Female-Cat Male-Cat-Female Male-Cat'
a = 'Male-Cat-Female'
a = 'Male-Cat'

缺少什么?您能解释什么是错误的,什么是正确的方法吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。