我必须有一个与以下行匹配的正则表达式:
ESR/EXR
ESR [1]
(ESR) [1]
(ESR) [1]
RARB [1]
ESR [1] # Space before word
但不匹配:
ESR
(ESR)
我已经尝试了(\w+)[?\s\/]\[\w+\]?\s
和^?\((\w+)?\)[?\s\/]\[\w+\]?\s
,但我无法找到一种方法来匹配所有情况与一个正则表达式。
有什么建议吗?
答案 0 :(得分:0)
我不确定我是否真的了解您的需求,但如何:
use Modern::Perl;
my $re = qr~\(?\w+\)?(?:[ /].+)~;
while(<DATA>) {
chomp;
say /$re/ ? "OK : $_" : "KO : $_";
}
__DATA__
ESR/EXR
ESR [1]
(ESR) [1]
(ESR) [1]
RARB [1]
ESR
(ESR)
<强>输出:强>
OK : ESR/EXR
OK : ESR [1]
OK : (ESR) [1]
OK : (ESR) [1]
OK : RARB [1]
KO : ESR
KO : (ESR)