Что не так с этим регулярным выражением Perl? - PullRequest
0 голосов
/ 15 апреля 2010

У меня есть такие строки

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 ]

4 голосов
/ 15 апреля 2010

Вы близки, конец вашего регулярного выражения терпит неудачу, так как он ожидает пробел перед показателем степени. попробуйте это:

$line =~ / (\w+) \s+ \( e= ([^,]+) /x;
0 голосов
/ 15 апреля 2010

На самом деле вы можете сделать все это в регулярном выражении, попробуйте

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

Регулярное выражение совпадает с частью (e = num ^ exponent,) вашей строки и, делая это, захватывает экспоненту num ^ (в $ 1), а затем заменяет все совпадение на $ 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...