正则表达式只返回部分结果
下面的正则表达式只返回部分结果 基本上,我试图找到两个连续的词后面的一个词,其中包含 至少1个大写和小写字母 至少1位
我能够匹配结果,但只得到前2个单词,而不是第3个单词作为结果。似乎长度条件也没有按规定工作,即在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!
模式的最后一部分
(?=.*[a-z]){8,32}
对小写字符重复肯定的前瞻断言8-32次。你知道吗如果希望第三个单词的长度为8-32个非空白字符长,可以使用
\S{8,32}(?!\S)
在您的模式中,您实际上没有匹配第三个单词。你知道吗
在lookaheads中,您可以使用否定,利用negated character class添加一个空白字符来不跨越边界。你知道吗
您可以使用:
Regex demo| Python demo
你的代码可能看起来像
结果
按以下方式定义函数:
让我们从正则表达式开始描述:
{0}
)和word2({1}
)之间应该有一个空格, 或者是一个空格序列(\s+
)。你知道吗,\s
)。你知道吗\S*
是.*
。有了一个圆点,这样的展望可以进入下一个词,但你 实际上应该在当前单词内检查。你知道吗现在就整个功能而言:
m.group()
)。你知道吗相关问题 更多 >
编程相关推荐