微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

正则表达式 – 有没有可能的方法来匹配第n个字符?

参见英文答案 > How can I extract the nth occurrence of a match in a Perl regex?                                    7个
我的输入数据如下.我想把这个词分组在 – 的第6和第7位之间.

my $sa = "a1a1a1-b1b1b1-c-ddd-eee-fff-gggggg-hHhH-iiii-j-KKKKK";

为此,实际的正则表达式是

/[^-]+-[^-]+-[^-]+-[^-]+-[^-]+-([^-]+)-/

为了构建正则表达式,我尝试如下,

my $avc = "[^-]+-" x 5 . "([^-]+)-";

my $ar = qr"$avc";

$sa =~m/$ar/g;

print $1;

我怀疑,正则表达式中是否有任何选项可用.不使用x.我怎么能在一个正则表达式中做到这一点?

解决方法

使用 limiting repetition quantifier

/(?:[^-]+-){5}([^-]+)-/

Regex explanation here.

捕获组可以在重复组内,只有最后一个被捕获.

/(?:([^-]+)-){6}/

Regex explanation here.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐