gpt4 book ai didi

regex - 在 perl 中的负前瞻表达式中正确使用插入符号

转载 作者:行者123 更新时间:2023-12-04 18:09:20 25 4
gpt4 key购买 nike

我试图匹配任何不完全由大写或小写字母组成的单词,我写了以下正则表达式:

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。有人可以向我解释为什么我需要将运算符移到负前瞻表达式之外吗?我是 regexp 的新手,我很困惑。

谢谢。

最佳答案

只检查字符串的大小写字符怎么样?

(?=.*[A-Z])(?=.*[a-z])

如您所见,这不会匹配仅包含一种情况的字符串,因为两个前瞻都必须匹配。

当然,这只是执行两个正则表达式匹配并组合结果的复杂方法:
if ($line =~ /[A-Z]/ and $line =~ /[a-z]/)

关于regex - 在 perl 中的负前瞻表达式中正确使用插入符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18818084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com