gpt4 book ai didi

python - 正则表达式返回部分结果

转载 作者:太空宇宙 更新时间:2023-11-04 04:04:21 24 4
gpt4 key购买 nike

正则表达式只返回部分结果

我有下面的正则表达式,它只返回部分结果基本上我试图找到 2 个连续的单词后跟一个包含至少1个大小写字母至少一位数

我能够匹配结果,但只能得到前 2 个词而不是第三个词作为结果。似乎长度条件也没有按规定工作,即在 8 到 32 之间

def findWordandCode(w1, w2, sentence):

return re.search(r'\b{0}(?:\W+\w+){{0,1}}\W+{1}\s*(?=.*[\d])(?=.*[A-Z])(?=.*[a-z]){{8,32}}'.format(w1, w2), sentence)

例如。

findWordandCode('word1','word2','word1 word2, abcABC123! blah blah')

这只返回word1 word2

预期结果:word1 word2 abcABC123!

最佳答案

按以下方式定义函数:

def findWordandCode(w1, w2, sentence):
m = re.search(r'\b{0}\s{1},\s'
'(?=\S*\d)(?=\S*[A-Z])(?=\S*[a-z])\S{{8,32}}(?=[\s|$])'\
.format(w1, w2), sentence)
return m.group() if m else ''

让我们从正则表达式开始描述:

  1. word1 ({0}) 和 word2 ({1}) 之间应该有一个空格,或者可能是空格序列 (\s+)。
  2. word2 之后必须有一个逗号和一个空格 (,\s)。
  3. 那么每个正面前瞻都应该在开始处有 \S*.*。有了一个点,这样的前瞻可以转到下一个单词,但是你实际上应该检查当前单词。
  4. 对于数字、小写字母和大写字母进行了 3 次前瞻,应该有与第三个单词匹配的部分 - 在 8 到 32 之间非空格字符。
  5. 最后,为了避免出现更长的词,应该有另一个对空格或字符串结尾的正向预测。

现在就整个功能而言:

  1. re.search 开始,但请记住,如果没有任何匹配项,结果是
  2. 然后,如果找到匹配项,则将其返回 (m.group())。
  3. 如果不是,则返回空字符串(或选择另一个“失败”值,例如)。

关于python - 正则表达式返回部分结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57631806/

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