如何在Perl正则表达式中转义括号?

时间:2016-04-20 01:30:51

标签: regex perl parsing text

如果我有一个字符串,如:

 JOURNAL   Yeast 10 (11), 1503-1509 (1994)

如何在括号中加上两个数字(11和1994)?我尝试的一种方法是使用:

/\s+JOURNAL\s+.*\((\d+).*\((\d+))/

但这不起作用。所以我的两个问题是:

  1. 如何转义括号以便我可以在RE中使用它们?

  2. 如何获得以上两个数字?

  3. 我在Perl中这样做。谢谢你的帮助!

3 个答案:

答案 0 :(得分:5)

你的正则表达式很好,除了你最后有一个额外的)

$_ = " JOURNAL   Yeast 10 (11), 1503-1509 (1994)";
if ( /\s+JOURNAL\s+.*\((\d+).*\((\d+)/ ) {
     print "one: $1, two: $2\n";
}

如果要明确确保数字后面有一个结束括号,则:

/\s+JOURNAL\s+.*\((\d+)\).*\((\d+)\)/ 

答案 1 :(得分:2)

试试这个

\((\d+)\)

Regex demo

<强>解释
\:逃脱一个特殊字符sample
( … ):捕获小组sample
+:一个或多个sample

答案 2 :(得分:-1)

还要考虑对字符使用八进制等价物,有时会更容易阅读。 所以要找到 (11) 正则表达式将是:\050(d+)\051