my $formget='(90-?A(SB)?)';
if ($form_type=~/$formget/i)
該正則表達式獲取90-A和90-ASB的文件,但它也獲得90-A/A和90-ASB/A。perl中的正則表達式獲取
但我想只有那些具有90-A和90-ASB而不是那些與90-A/A和90-ASB/A ..
我應該做怎樣的改變?
my $formget='(90-?A(SB)?)';
if ($form_type=~/$formget/i)
該正則表達式獲取90-A和90-ASB的文件,但它也獲得90-A/A和90-ASB/A。perl中的正則表達式獲取
但我想只有那些具有90-A和90-ASB而不是那些與90-A/A和90-ASB/A ..
我應該做怎樣的改變?
正則表達式很好。使用錨限制在正則表達式匹配
^90-?A(SB)?$
變化在字符串的開始,在結束時提出
^
錨的正則表達式
$
錨的正則表達式的字符串
這些錨點確保字符串總是以90
開頭,並在遇到A
或ASB
時立即結束。
90-A/A
因爲A
之後,遇到/
失敗其中作爲正則表達式期望一個$
和
90-ASB/A.
因爲A
之後,遇到S
失敗其中作爲正則表達式期望一個$
如果你只匹配開頭90-
表示我的代碼對你有用。如果你的文件數據像我一樣。這得到90-A
和90-ASB
@da=<DATA>;
@ans=map{m/90-A$|90-ASB$/g} @da;
print "@ans\n";
__DATA__
90-A/A
90-ASB
90-A
90-ASB
90-B
解釋更充分使用其他用戶的正則表達式。 :) – mkHun 2016-08-05 03:44:22
由於空指針,看來我沒有得到很好但:) – adrCoder 2014-11-08 14:09:26
我只是接受了nu11 p01n73R – adrCoder 2014-11-08 14:24:40