gpt4 book ai didi

regex - 为什么我的正则表达式会这样做?

转载 作者:行者123 更新时间:2023-12-01 03:30:08 25 4
gpt4 key购买 nike

考虑以下文本:

foo:·····¶
·bar x··¶
·lorem ipsum····¶
dolorsitamet···¶
···¶
consectetur adipiscing elit:

其中中间点表示空格和 表示换行。

正则表达式 (?:foo:\s*)(.+)(?:\n\s*)匹配空白行上的三个空格,但匹配正则表达式 (?:foo:\s*)(.+)(?:\n\s+)匹配到但不包括 dolorsitamet 后面的换行符.为什么 * 字符不贪婪?人们会期待第三组 (?:\n\s*)匹配

···¶`

我的正则表达式模式是多行,dotall。

最佳答案

贪婪的本性不是这里的问题。问题是当您使用:

\n\s*

.+在这之前是贪婪的, \n\s*最后匹配 \n在输入文本中,即 (last-1)th行(即有 3 个空格的行)和停止。

RegEx Demo 1

但是,当您使用
\n\s+

由于存在量词 + ,它需要 \n 后至少有一个空格因此它不能匹配 \n(last-1)th行(因为最后一行开始时没有任何空格)。因此它匹配 \n在以 dolorsitamet 开头的行中因为下一行在开始时有空格。

RegEx Demo 2

关于regex - 为什么我的正则表达式会这样做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38549421/

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