regex - Perl 正则表达式否定

标签 regex perl regex-negation

如何取反这个正则表达式(不使用 !~)?

my $Line='pqr_abc_def_ghi_xyz';

if ($Line=~/(?:abc|def|ghi)/)
{
   printf("abc|def|ghi is not present\n");
}
else
{
   printf("abc|def|ghi is present\n");
}

注意:abc,def 或 ghi 可以在字符串之前或之后

最佳答案

if ( $Line =~ /^(?!.*(?:abc|def|ghi))/s ) {

即,不可能在字符串开头之后的任何位置匹配该模式。

关于regex - Perl 正则表达式否定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20229880/

相关文章:

regex - 为什么我们应该在正则表达式中更喜欢否定字符类而不是 .* ?

javascript - 是否可以合并两个正则表达式查询?

正则表达式选择括号括起来的所有字符,前提是存在等号

regex - 替换匹配前的第一个字符

正则表达式匹配不以模式结尾的字符串?

Python 正则表达式否定元字符

python - 在 python 中删除 html 标签之间的空格和换行符(又名取消格式)

regex - 如何从正则表达式电子邮件模式中排除图像?

linux - 删除部分绝对路径字符串

perl - 无法理解以下 Perl 语法