加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Perl正则表达式 – 如何减少贪心?

发布时间:2020-12-15 22:00:36 所属栏目:大数据 来源:网络整理
导读:如何计算以下字符串中空’字段’的数量? 空字段用 – |表示或| – |或者| – 我已经煮熟的正则表达式似乎正在工作,除非我有连续的空字段?我如何减少贪心? my $string = 'P|CHNA|string-string|-|-|25.75|-|2562000|-0.06';my $count = () = ($string=~/(?
如何计算以下字符串中空’字段’的数量?
空字段用 – |表示或| – |或者| –
我已经煮熟的正则表达式似乎正在工作,除非我有连续的空字段?我如何减少贪心?
my $string = 'P|CHNA|string-string|-|-|25.75|-|2562000|-0.06';
my $count = () = ($string=~/(?:^-|||-$||-|)/g);   
printf("$countn");

上面的代码打印2而不是我想要的3.

解决方法

诀窍是使用lookarounds.某人的第一次尝试可能如下:
my $count = () = $string =~ /
   (?<|)  # Preceded by "|"
   (-)
   (?=|)  # Followed by "|"
/xg;

但这不起作用.上述问题是它不检测第一个字段或最后一个字段是否为空.解决这个问题的两种方法:

my $count = () = "|$string|" =~ /
   (?<|)  # Preceded by "|"
   (-)
   (?=|)  # Followed by "|"
/xg;

要么

my $count = () = $string =~ /
   (?<![^|])  # Not preceded by a char other than "|"
   (-)
   (?![^|])   # Not followed by a char other than "|"
/xg;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读