我需要从文本中提取出符合以下两个条件的所有单词:
因此,单词和 WorD 是正确的捕获,但是单词和 WORD 不是正确的捕获。
>因此,我可以使用\b([a-zA-Z]+)\b
正则表达式来捕获所有单词,但是我不知道如何在此处添加大写字母条件。
关于#1要求,我tried在此处使用正向前瞻,如下所示:
\b(?=.*[A-Z]+)([a-zA-Z]+)\b
,但是现在如果一行中至少有一个大写字母,它将捕获一行中的所有单词。
是否甚至可以将其他条件应用于捕获组? 我可以在应用程序的代码中进行处理,但我真的更希望在单个Regex中满足所有这些要求。
答案 0 :(得分:1)
您可以使用
\b(?=[A-Z]*[a-z])(?=[a-z]*[A-Z])([a-zA-Z]+)\b
请参见regex demo
实际上,您甚至不需要捕获组,([a-zA-Z]+)
通常可以用[a-zA-Z]+
代替,但这取决于您使用正则表达式的位置。
详细信息
\b
-单词边界(?=[A-Z]*[a-z])
-正向先行,要求在0+大写字母之后使用小写字母(?=[a-z]*[A-Z])
-正向超前,要求0 +小写字母后必须大写字母([a-zA-Z]+)
-第1组:1个或更多字母\b
-单词边界。