gpt4 book ai didi

regex - Perl 正则表达式匹配字符串不以某物结尾

转载 作者:行者123 更新时间:2023-12-05 08:59:31 26 4
gpt4 key购买 nike

请问哪个正则表达式能正确匹配?

我想识别不以特定文本 (_array) 结尾的字符串。我试过使用负前瞻,但我无法让它工作。 (请注意,显而易见的答案是执行相反的操作 (m{_array$}),但我不想这样做是有原因的)。

 use strict;
use warnings;
while(<DATA>) {
#
## If the string does not end with '_array' print No, otherwise print Yes
m{(?!_array)$} ? print "No = " : print "Yes = ";
print;
}
__DATA__
chris
hello_world_array
another_example_array
not_this_one
hello_world

我想要的输出应该是:

 No  = chris
Yes = hello_world_array
Yes = another_example_array
No = not_this_one
No = hello_world

最佳答案

你需要在背后消极看待。即,您想搜索不在 _array 之前的字符串结尾。

请注意,您需要先chomp 该行,因为$ 将匹配尾随换行符前后。

条件运算符旨在返回一个 - 它不是if 语句的简写。

use strict;
use warnings;

while (<DATA>) {
chomp;
# If the string does not end with '_array' print No, otherwise print Yes
print /(?<!_array)$/ ? "No = $_\n" : "Yes = $_\n";
}

__DATA__
chris
hello_world_array
another_example_array
not_this_one
hello_world

输出

No  = chris
Yes = hello_world_array
Yes = another_example_array
No = not_this_one
No = hello_world

关于regex - Perl 正则表达式匹配字符串不以某物结尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14234932/

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