首页 > 解决方案 > 匹配以大写字母开头的单词直到以大写字母开头的单词

问题描述

我想匹配以大写字母开头的行中的单词并继续直到以另一个大写字母开头的单词开始。

Animals Chicken helmet Animal baby kids Crazy 6 yo monkey Baby white-black horse

匹配:/包含小写字母、数字、特殊字符

Animals Chicken helmet Animal baby kids Crazy 6 yo monkey Baby white-black horse

我试过这个

(^[A-Za-z]+\s?\w+\W+?\d?)+

标签: regex

解决方案


您可以使用

\b[A-Z]\S*(?:\s+[^A-Z\s]\S*)*

请参阅正则表达式演示

细节

  • \b- 单词边界(如果单词用空格分隔,则替换为(?<!\S)
  • [A-Z]\S*- 一个大写的 ASCII 字母(如果支持 Unicode 支持,则替换\p{Lu}为),然后是任何零个或多个非空白字符
  • (?:\s+[^A-Z\s]\S*)*- 零次或多次出现
    • \s+- 一个或多个空格
    • [^A-Z\s]- 除空格和大写 ASCII 字母外的任何字符([^\p{Lu}\s]如果需要并支持 Uniocde 支持,则使用)
    • \S*- 任何零个或多个非空白字符

推荐阅读