【发布时间】:2010-04-15 01:53:18
【问题描述】:
我有这样的台词
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";
【问题讨论】:
我有这样的台词
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";
【问题讨论】:
你已经接近了,你的正则表达式的结尾失败了,因为它需要在指数之前有空格。试试这个:
$line =~ / (\w+) \s+ \( e= ([^,]+) /x;
【讨论】:
x 修饰符,因为我在正则表达式中添加了空间以使其更具可读性。立即尝试
其实你可以用正则表达式来做这一切,试试
$line =~ s/\(\s*e\s*=\s*([^,]+),\)/-$1/
正则表达式匹配字符串的 (e=num^exponent,) 部分,同时捕获 num^exponent(在 $1 中),然后用 $1 替换整个匹配项。
【讨论】: