單詞以-D
開頭(它也可能是-d
)。 後跟零個或多個空格。 之後是$
。 然後系列是{rajna_NAME}
。 簡言之我必須使用正則表達式在Perl中提取單詞
-d ${ranjana_wdgf_NAME}or -D${Tom_task_NAME}
我想提取
ranjana_wdgf
Tom_task
我的疑問是
if ($word =~ m/^-D(\$)\|(\w*NAME)\b/)
有什麼不對?
單詞以-D
開頭(它也可能是-d
)。 後跟零個或多個空格。 之後是$
。 然後系列是{rajna_NAME}
。 簡言之我必須使用正則表達式在Perl中提取單詞
-d ${ranjana_wdgf_NAME}or -D${Tom_task_NAME}
我想提取
ranjana_wdgf
Tom_task
我的疑問是
if ($word =~ m/^-D(\$)\|(\w*NAME)\b/)
有什麼不對?
有時正則表達式不如其他方式那樣健壯。
對於這種情況下,我不介意給Text::Balanced
一個嘗試。
如果你真的需要一個正則表達式來解決這個問題, 那麼試試這個
$word =~ m/\{(.*?)\_NAME/; # assuming that name is surrounded by curly brackets
更新時間:
$word =~ m/-[dD]\s*\$\{(.*?)_NAME/; #assuming -d or -D always be there.
我不知道我的理解問題正常。 但看起來像下面的代碼解決您的問題:
$ cat extract.pl #!/usr/bin/perl use strict; use warnings; sub extract_name($) { my $s = shift; if($s =~ /^-[dD]\s*\${(.*)_NAME}$/) { print "$1\n"; } return; } extract_name('-d ${ranjana_wdgf_NAME}'); extract_name('-D${Tom_task_NAME}'); $ perl extract.pl ranjana_wdgf Tom_task $
是否有任何機會,包括-D或正則表達式作爲過濾判定基準與它allong -d應該開始with..Because其過濾和其他有害數據..因爲文本文件很大,我無法提供整個內容 – Sreeja 2010-08-04 09:49:56
@Sreeja:更新,看看。 – 2010-08-04 10:09:03
謝謝..它工作正常與此.. – Sreeja 2010-08-04 10:42:05