regex - 匹配 Perl 中的最后一个正则表达式模式

标签 regex perl

我正在用 Perl 编写脚本,需要从文本文件中提取一些信息。

这就是我的代码的样子 - 字符串值是组成的,但代表所有可能的字符串变体。

my @alpha = ("abcdefgh(i) jklmno(pqrs3), uvwxyz", 
             "abcdefghi jklmn(opq1st), uvwxyz",
             "abcdefghi jklmn(o_q(1s3)), uvwxyz",
             "abcdef(gh)i jklmno(pq(1s3)), uvwxyz");

foreach my $line (@alpha){
    if ($line =~ /\((.*\(?.*\)?)\),/){
    print $1
    }
}

我正在 try catch 最后一组括号(或我们说英语的英国人的方括号)之间的大文本。
请注意,我使用的是“点”运算符,因为我想匹配任何内容、文本、数字或其他特殊字符。

基本上我想打印出来:

pqrs3
opq1st
o_q(1s3)
pq(1s3)

但我不断得到:

 (i) jklmno(pqrs3) <-- not ok
 opq1st <-- this is ok
 opq(1s3) <-- this is also ok
 gh)i jklmno(pq(1s3) <-- not ok

我做错了什么?或者甚至可以这样匹配?
感谢您的帮助。

最佳答案

(\((?:[^()]|(?1))*\))(?!.*\()

您可以在此处使用递归 正则表达式。查看演示。

https://regex101.com/r/hE4jH0/21

关于regex - 匹配 Perl 中的最后一个正则表达式模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34035671/

相关文章:

javascript - 正则表达式javascript将第二个字母与第一个字母匹配,但第二个字母必须是大写

c# - 最适合我目的的正则表达式

perl - 安装 perl DBD :Pg on Mac

python - 计算非常小的值的-log10

perl - 为什么我在 Perl 中将 binmode 与线程一起使用时会出现段错误?

javascript - 字符串第一个单词在 Javascript 中的位置

php - preg_match 中相同类型的多个匹配

javascript - 增加和减少 HTML 元素上的背景 RGBA 不透明度

perl - 将给定命名空间中的所有 POD 转换为一个大的 HTML 页面

html - 为什么我不能在 Perl 中使用 WWW::Mechanize::Firefox 提交我的表单?