我需要从文本中提取符合这两个要求的所有单词:
因此,Word和WorD是正确的捕获,但是单词和WORD不是。
所以,我可以使用\b([a-zA-Z]+)\b
正则表达式捕获所有单词,但我不知道如何在这里添加大写字母条件。
至于要求#1,我tried在这里使用正向前瞻:
\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
- 一个单词边界。