"Bar-6ren">
gpt4 book ai didi

regex - 匹配所有内容直到大写单词

转载 作者:行者123 更新时间:2023-12-01 23:42:06 24 4
gpt4 key购买 nike

我想捕获放在另一个全大写单词之前的单词

Mister Foo BAR is here        # => "Foo"
Miss Bar-Barz FOO loves cats # => "Bar-Barz"

我一直在尝试以下正则表达式:(Mister|Miss)\s([[:alpha:]\s\-]+)(?=\s[A-Z]+) , 但有时它包括句子的其余部分。例如,它将返回 Bar-Barz FOO loves cats 而不是 Bar-Barz)。

  • 如何使用 RegExp 说“匹配每个单词直到大写单词”?

  • 为了阐明negative lookahead的用法,我们可以说它“捕获直到指定的子模式匹配,但不将其包含到匹配数据中”吗?

作为非英语母语人士,如果我的回答表述不当,请见谅。提前致谢

最佳答案

匹配 1 个以上由 - 可选重复的单词字符和 1 个以上单词字符以不只匹配连字符或末尾的连字符。

断言一个空格后跟 1 个以上的大写字符和右侧的单词边界。

\w+(?:-\w+)*(?=\s[A-Z]+\b)

解释

  • \w+ 匹配1+个单词char
  • (?:-\w+)* 可选择重复匹配 - 和 1+ 字字符
  • (?=\s[A-Z]+\b) 正面前瞻,断言直接在右边的是 1+ 个大写字符 A-Z 后跟单词边界

Regex demo

如果单词之间不能有换行,可以用[^\S\r\n]代替\s

\w+(?:-\w+)*(?=[^\S\r\n]+[A-Z]+\b)

Regex demo

关于regex - 匹配所有内容直到大写单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64860793/

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