gpt4 book ai didi

Python 正则表达式 - 任何子字符串匹配

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

我想查找格式为 18-05-2018 18-05-18 的日期,但不是 2018-05-18。我想使用正则表达式,以便在这样的日期出现在字符串中时得到 True

因此它应该为这些字符串返回 True:

  • ggggg18-05-2018ggggg
  • ggggg18-05-2018ggggg12345678
  • ggggg18-05-18ggggg
  • ggggg18-05-18ggggg12345678

但它应该为这些字符串返回 False:

  • ggggg2018-05-18ggggg
  • ggggg2018-05-18ggggg12345678

怎么做?我找到了 findall() 方法和模式 '\d{1,2}[-]\d{1,2}[-]\d{2,4}' 但它为最后两个字符串返回了 True,因为它在其中找到了 18-05-18

最佳答案

使用后视和前视:

import re

s = 'sasdassdsadasdadas18-05-2018sdaq1213211214142'

print(re.findall(r'(?<!\d)\d{1,2}[-]\d{1,2}[-]\d{2,4}(?!\d)', s))
# ['18-05-2018']

这确保在所需内容的开头或结尾没有尾随数字。


证明它可以处理您的错误情况:

import re

s = 'sasdassdsadasdadas2018-05-2018sdaq1213211214142'

print(re.findall(r'(?<!\d)\d{1,2}[-]\d{1,2}[-]\d{2,4}(?!\d)', s))
# []

关于Python 正则表达式 - 任何子字符串匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53247866/

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