regex - 匹配至少一个小写字母和至少一个大写字母

标签 regex grep regex-lookarounds

我正在尝试提取单词 [a-zA-Z]+有一个限制:一个词必须包含至少一个小写字母和至少一个大写字母(在词中的任何位置)。示例:如果输入是 hello 123 worLD ,唯一匹配的应该是 worLD .

我尝试使用这样的正向预测:

echo "hello 123 worLD" | grep -oP "(?=.*[a-z])(?=.*[A-Z])[a-zA-Z]+"
hello

这是不正确的:唯一匹配的是 hello而不是 worLD .然后我尝试了这个:
echo "hello 123 worLD" | grep -oP "\K((?=.*[a-z])(?=.*[A-Z])[a-zA-Z]+)"
hello
worLD

这仍然不正确:hello不应该匹配。

最佳答案

.*在先行检查中,不仅在相邻单词中,而且在字符串中检查字母是否存在。使用 [a-zA-Z]* :

echo "hello 123 worLD" | grep -oP "\\b(?=[A-Za-z]*[a-z])(?=[A-Za-z]*[A-Z])[a-zA-Z]+"

demo online

我还加了一个词边界\b在开头,以便仅在单词边界之后执行先行检查。

关于regex - 匹配至少一个小写字母和至少一个大写字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38897840/

相关文章:

javascript - 使用 javascript 将 href 中的所有特定术语更改为另一个特定术语

java - Java 中完美的 URL 验证正则表达式

bash - 我怎样才能grep变量中的复杂字符串?

.net - 正则表达式先行仅删除最后一个字符

regex - 前瞻与后视

regex - Lookbehind 和 Lookaround 概念在 TCL 正则表达式引擎中有用吗?

不以 X 开头的 Python 匹配字符串

php - 在SQL查询中插入字符串以更改PHP的顺序

linux - 在 linux 中查找大文本文件中出现的次数

linux - grep unicode 16 支持