我有以下python代码data = re.sub("{.{4,9}b .*?[\r\n]*?.*? ((.*\\()|(..fs24))",string,re.DOTALL)
我希望下面的每一个字符串都能有两个匹配项
?{\f1\fs24\b \u1510 ?}\u1489 ?\fs24
以及
?{\f1\fs24\b \u1492 ?}\u1494 ?(
在两者的两个排列中
?{\f1\fs24\b \u1492 ?}\u1494 ?( ?{\f1\fs24\b \u1510 ?}\u1489 ?\fs24
?{\f1\fs24\b \u1510 ?}\u1489 ?\fs24 ?{\f1\fs24\b \u1492 ?}\u1494 ?(
然而,OR操作符是贪婪的。所以它总是尝试输入第一个操作数,所以在这两种情况下,它都会消耗整个字符串,只给我一个匹配项。。。你知道吗
我花了一些时间才明白贪婪。。。 为了解决这个问题,我在玩积极的前瞻性假设。 我也试着做两个单独的搜索,但贪婪总是赢。。。你知道吗
我不知道你到底想做什么,但是如果你想在第一个
(
或..fs24
停止,那么你需要使用一个负的前瞻来检查每个.
匹配是否匹配。你知道吗如果你正在匹配,你需要
re.search
(或者re.findall
来匹配一个whoop中的多个匹配)。使用re.sub
时,您仍然需要两个输入字符串。你知道吗注意事项:
:这一部分对我来说似乎不太有用,但我把它放在那里了,因为我不知道除了在第一个.*?[\r\n]*?.*?
(
或..fs24
停止之外,你还想做什么。你知道吗regex demo对于最后一个字符串,您将得到2个匹配项,而不是1个。你知道吗
相关问题 更多 >
编程相关推荐