gpt4 book ai didi

ruby - 如何将正则表达式限制为较小的捕获

转载 作者:数据小太阳 更新时间:2023-10-29 07:49:19 24 4
gpt4 key购买 nike

这是我的文字:

"A popular resource for the Christian community in the Asheville area."
"I love the acting community in the Orange County area."

我想捕获 “Asheville”“Orange County”。如何从最近的 "the""area" 开始捕获?

这是我的正则表达式:

/the (.+?) area/

他们捕获:

"Christian community in the Asheville"
"acting community in the Orange County"

最佳答案

使用 (?:(?!the).)+? tempered greedy token :

/the ((?:(?!the).)+?) area/

参见 regex demo .和/the ([^t]*(?:t(?!he)[^t]*)*?)区/几乎一样,但是the latter is a bit more efficient因为它是展开的图案。

(?:(?!the).)+? 匹配不以 the 字符序列开头的任何 1+ 个字符(尽可能少)。

为了更安全,添加单词边界以仅匹配整个单词:

/\bthe ((?:(?!\bthe\b).)+?) area\b/

ruby 演示:

s = 'I love the acting community in the Orange County area.'
puts s[/the ((?:(?!the).)+?) area/,1]
# => Orange County

注意:如果您希望匹配跨越多行,请不要忘记添加 /m 修饰符:

/the ((?:(?!the).)+?) area/m
^

关于ruby - 如何将正则表达式限制为较小的捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44269976/

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