将多个条件应用于捕获组



我需要从文本中提取符合这两个要求的所有单词:

  1. 至少包含一个大写字母
  2. 不要完全由大写字符组成。

因此,WordWorD 是正确的捕获,但单词WORD 不是。

因此,我可以使用b([a-zA-Z]+)b正则表达式捕获所有单词,但我不知道如何在此处添加大写字母条件。

至于要求#1,我试图在这里使用积极的展望,如下所示:

b(?=.*[A-Z]+)([a-zA-Z]+)b ,但现在如果该行至少有一个大写字母,它会捕获一行中的所有单词。

是否可以将其他条件应用于捕获组?我可以在我的应用程序代码中处理它,但我真的更愿意在单个正则表达式中满足所有这些要求。

您可以使用

b(?=[A-Z]*[a-z])(?=[a-z]*[A-Z])([a-zA-Z]+)b

查看正则表达式演示

实际上,您甚至不需要捕获组,([a-zA-Z]+)通常可以用 [a-zA-Z]+ 替换,但这取决于您使用正则表达式的位置。

  • b - 词边界
  • (?=[A-Z]*[a-z]) - 一个积极的展望,需要在 0+ 大写字母之后使用小写字母
  • (?=[a-z]*[A-Z]) - 一个积极的展望,需要在 0+ 小写字母之后有一个大写字母
  • ([a-zA-Z]+) - 第 1 组:1 个或多个字母
  • b - 单词边界。

相关内容

  • 没有找到相关文章

最新更新