gpt4 book ai didi

python - 无法使用正则表达式使用单词或空格边界提取所有单词

转载 作者:行者123 更新时间:2023-11-28 22:23:55 25 4
gpt4 key购买 nike

我需要提取双 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', a)
print (c)
['Male-Cat', 'Male-Cat', 'Male-Cat']

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

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

少了什么?你能解释一下什么是错误的,什么是正确的方法吗?

最佳答案

使用环视来提取空白边界内的单词:

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

参见 online regex demo

详情

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

(?<!\S)(?!\S)是零宽度断言,不会消耗空格,并且会找到连续的匹配项。

关于python - 无法使用正则表达式使用单词或空格边界提取所有单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46765886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com