gpt4 book ai didi

regex - 获取序列第一次和第二次出现之间的文本

转载 作者:行者123 更新时间:2023-12-04 14:42:38 24 4
gpt4 key购买 nike

如何在包含第一次出现和排除第二次出现的情况下获取序列第一次出现和第二次出现之间的文本?

例如:

让我的顺序为 = "xx - "
让我的文字 = "xx - blablabla bla blaxx - blablabla bla bla xx - blabla"

所以我希望我的正则表达式得到这个 block :

"xx - blablabla bla bla"

我试过这样的:

^xx - .*xx - 

但这会获取第一次和第三次出现之间的文本,并且不排除最后一次出现。

最佳答案

(xx - )(.*?)\1

解释

(xx - )     # your sequence (group 1)(.*?)       # anything, match non-greedily into group 2\1          # whatever group 1 was 

你想要第 2 组的内容。

请注意,正则表达式引擎使用不同样式的反向引用,\1 最常见的替代方法是 $1


这就是您的方法不起作用的原因:您的错误非常常见。它包括认为 .* 会以某种方式神奇地停在正确的点,让正则表达式的其余部分匹配。它不是。

.* 直接到行/字符串的末尾,没有任何考虑。这就是所谓的“贪婪匹配”。当它到达字符串的末尾时,就会发生回溯。正则表达式的其余部分可以匹配的第一个点是序列的最后一次出现,从字符串的末尾看。您最终会得到最长的匹配。

.*? 执行所谓的“非贪婪匹配”。它在移动到下一个字符之前检查正则表达式的其余部分。这就是为什么您的序列的第一次出现可以匹配。你最终得到了最短的匹配。

关于regex - 获取序列第一次和第二次出现之间的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5592709/

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