gpt4 book ai didi

regex - 如何编写 perl if 语句来测试使用正则表达式找到字符串的次数?

转载 作者:行者123 更新时间:2023-12-01 07:34:16 26 4
gpt4 key购买 nike

我正在尝试编写一个包含 if 语句的 perl 脚本,并且我希望这个 if 语句检查是否在保存的字符串中通过正则表达式找到了某个字符串。如果可能的话,我想在一行中做到这一点,想象如下:

$saved_string = "This abc is my abc test abc";
if( #something_to_denote_counting ($saved_string =~ /abc/) == 3)
{
print "abc was found in the saved string exactly 3 times";
}
else
{
print "abc wasn't found exactly 3 times";
}

...但我不知道我需要在 if 语句中做什么来检查正则表达式匹配的次数。有人可以告诉我这是否可能吗?谢谢!

最佳答案

if ( 3 == ( () = $saved_string =~ /abc/g ) ) {
print "abc was found in the saved string exactly 3 times";
}

要获得计数,您需要在列表上下文中使用/g。所以你可以这样做:
@matches = $saved_string =~ /abc/g;
if ( @matches == 3 ) {

但是 perl 提供了一些帮助以使其更容易;放置在标量上下文中的列表赋值(例如由 == 提供),返回赋值右侧元素的计数。这使代码如下:
while ( my ($key, $value) = each %hash ) {

所以你可以这样做:
if ( 3 == ( @matches = $saved_string =~ /abc/g ) ) {

但甚至不需要使用数组;分配到一个空列表就足够了(并且已经成为您需要在列表上下文中执行代码但只获得结果计数的地方的习惯用法)。

关于regex - 如何编写 perl if 语句来测试使用正则表达式找到字符串的次数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18021965/

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