gpt4 book ai didi

regex - 我怎样才能让它只匹配单词 'speaks' 之后的单词并忽略逗号和空格

转载 作者:行者123 更新时间:2023-12-04 02:28:00 26 4
gpt4 key购买 nike

我有以下正则表达式:

/(?<=\w\sspeaks\s)(?!,|\s|\.)([\w]+)/gmi

字符串是:

Example Person speaks ExampleLanguage1, ExampleLanguage2, ExampleLanguage3 and ExampleLanguage4.
Example Person two speaks ExampleLanguage1, ExampleLanguage2, ExampleLanguage3 and ExampleLanguage4.
Example Person three speaks ExampleLanguage1 and ExampleLanguage2.

对我来说,以上只匹配:

ExampleLanguage1
ExampleLanguage1
ExampleLanguage1

我要匹配:

ExampleLanguage1
ExampleLanguage2
ExampleLanguage3
ExampleLanguage4
ExampleLanguage1
ExampleLanguage2
ExampleLanguage3
ExampleLanguage4
ExampleLanguage1
ExampleLanguage2

单词 Example Person 可以是任何单词,即使中间没有空格。单词 ExampleLanguage 没有标记数字。它们也可以有空格,可以是任何单词。

这是一个链接:https://regex101.com/r/MjL8cW/1

最佳答案

如果你可以利用\G anchor ,你可能会匹配4个或更多的单词字符,或者匹配1-3个字符的单词并使用\K来清除匹配缓冲区。

(?:^.*?\hspeaks|\w{1,3}|\G(?!^))[,.]?\h+\K\w{4,}

模式匹配:

  • (?: 非捕获组
    • ^.*?\hspeaks 匹配从字符串的开头到第一次出现的空白字符和 speaks。
    • | 或者
    • \w{1,3} 匹配1-3个字符
    • | 或者
    • \G(?!^) 断言上一场比赛结束时的位置,但不是开始
  • ) 关闭非捕获组
  • [,.]?\h+ 匹配可选的 ,. 和 1 个或多个水平空白字符
  • \K\w{4,} 使用 \K 忘记到目前为止匹配的内容并匹配 4 个或更多字符

Regex demo

关于regex - 我怎样才能让它只匹配单词 'speaks' 之后的单词并忽略逗号和空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66122969/

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