我有一个字符串说
my $str = "FILLER-1-1,EQPT:MN,EQPT_MISSING,NSA,04-30,15-07-13,NEND,NA";
我想匹配一个模式说
my $pattern = "FILLER-1-1";
我正在使用以下正则表达式
$reg = $str =~ /$pattern/;
这很好用
现在的问题是,如果我们的字符串是
,它也匹配FILLER-1-10/FILLER-1-11/FILLER-1-12 so on ...
我不想匹配这个。另外,我不希望我的正则表达式像
$reg = $str =~ /$pattern\W+/;
这个问题正在解决上述问题,但\W
可能会来或不来。在某些字符串中它可以来,而在其他字符串中它可能不会来。所以我需要正则表达式仅匹配FILLER-1-1
而不使用\W+
,它应该专门匹配FILLER-1-10
注意:如果有人对我的问题进行了-
(减号)评分,请告诉我代码中的错误。如果这个人写评论也会很明显
答案 0 :(得分:3)
当\ w匹配[a-zA-Z0-9]时,你可以使用零宽度假设\ b,它表示\ w状态的变化(称为“单词边界”,因此是“b”快捷键):
/ FILLER-1-1 \ B /
这意味着需要有一个与前一个单词状态不同的字符 - 单词状态更改。
匹配
FILLER-1-1.
FILLER-1-1&
FILLER-1-1,
不匹配
FILLER-1-1a
FILLER-1-16
详细了解here。
答案 1 :(得分:0)
如果你想在输入(行)开头跟两个数字匹配FILLER
,这个简单的正则表达式应该可以工作:
/~FILLER-\d+-\d+/
~
匹配输入的开头\d
匹配任何数字([0-9]
)+
至少匹配一个,但可以匹配任何数字答案 2 :(得分:-1)
使用?
量词,如下:
/FILLER-\d-\d\W?/
\W?
表示不是零或一次