这个Perl正则表达式出了什么问题?

时间:2010-04-15 01:53:18

标签: regex perl

我有这样的行

NF419andZNF773 (e=10^-92,). 
ZNF571 (e=2 10^-14,)

提取上述结果的正则表达式是什么,以便

NF419andZNF773 - 10^-92
ZNF571 - 2 10^-14

我尝试了但却失败了。

$line =~ /(\w+)\s\(e=\s(.*),\)/;
print "$1 - $2\n";

2 个答案:

答案 0 :(得分:4)

你很接近,你的正则表达式的结尾是失败的,因为它在指数之前需要空间。试试这个:

$line =~ / (\w+) \s+ \( e= ([^,]+) /x;

答案 1 :(得分:0)

实际上你可以在正则表达式中完成所有这一切,尝试

$line =~ s/\(\s*e\s*=\s*([^,]+),\)/-$1/

正则表达式匹配字符串的(e = num ^ exponent,)部分,并在执行此操作时捕获num ^指数($ 1),然后用$ 1替换整个匹配。