我正在尝试匹配任何不完全由大写字母或小写字母组成的单词,并且我编写了以下正则表达式:
if ($line =~ /(?!^[A-Z][A-Z]+(\s*)$)(?!^[a-z][a-z]+(\s*)$)/) {
print $line;
}
下面的表达式应该匹配所有大写字母的单词
(?!^[A-Z][A-Z]+(\s*)$)
这应该匹配所有小写字母的单词
(?!^[a-z][a-z]+(\s*)$)
我将两者结合起来并尝试将其与以下单词匹配,ASDSFSDF、asdfasdfasdf 和 asdasdfFFFdsfs。我注意到它匹配一切。仅当我将插入符号移到括号外时,如下所示:
^(?![A-Z][A-Z]+(\s*)$)^(?![a-z][a-z]+(\s*)$)/)
我看到它只加工 asdasdfFFFdsfs。有人可以向我解释为什么我需要将运算符移到负前瞻表达式之外?我是正则表达式的新手,我很困惑。
谢谢。