Suppoch我有话要说。我必须检查他们是否在开始处有“ RX”,在结尾处是否有“ CD”。
例如 我有这个“ RX3!Pl6HxTCD”。
我尝试过的是波纹管
$subject = "RX3!Pl6HxTCD";
$pattern = '/^CD/';
preg_match($pattern, substr($subject,10), $matches, PREG_OFFSET_CAPTURE);
print_r($matches);
我得到的是
Array ( [0] => Array ( [0] => CD [1] => 0 ) )
我想检查单词的前2个字母和后2个字母。并且字母的数量可能会增加。
谢谢。
答案 0 :(得分:1)
如果要同时检查字符串的开头和结尾,则不应substr
字符串。
使用
if (preg_match('/^RX.*CD$/sD', $subject, $matches)) {
print_r($matches);
}
请参见PHP demo。
模式将匹配
^
-字符串的开头RX
-RX
子字符串.*
-任意0个以上的字符,并且尽可能多CD
-CD
子字符串$
-字符串的结尾。由于使用s
修饰符,.
也将匹配换行符,并且对于D
,如果CD
后跟换行符LF,则将不匹配。在字符串的末尾。
但是,您也可以使用非正则表达式方法:
if (substr($subject, 0, 2) === 'RX' && substr($subject, -2) === 'CD') {
echo "$subject\n";
}
请参见PHP demo。