如何使用正则表达式分隔
BCT34385Z0000N07518Z
BCT34395Z0000N07518Z
成BCT343
格式?我正在使用magento将2种序列号(即BCT34385Z0000N07518Z
和BCT34395Z0000N07518Z
)分解为正则表达式,以便识别前6个字符,即BCT343
。
答案 0 :(得分:1)
如果您需要的是将这些字符串分成两部分(前六个字符和其余部分),则根本不需要正则表达式。你可以只使用substr
:
<?php
$str1 = substr("BCT34385Z0000N07518Z", 0, 6); // BCT343
$str2 = substr("BCT34385Z0000N07518Z", 6); // 85Z0000N07518Z
?>
如果您想使用正则表达式执行此操作,则应设置两个捕获组,一个用于前六个字符,另一个用于其余字符串。正则表达式如下所示:
/^(.{6})(.*)$/
/^ // Start of input
( // Start capture group 1
. // Any charactger
{6} // Repeated exactly 6 times
) // End of capture group 1
( // Start capture group 1
. // Any character
* // Repeated 0 or more times
) // End of capture group 2
$/ // End of input
您应该使用preg_match()
来使用它。请记住,每个捕获组都将位于匹配数组的位置。请参阅此RegExr的正则表达式示例。
答案 1 :(得分:1)
这是非常糟糕的做法,但是因为你要求它:
$str = 'BCT34385Z0000N07518Z';
preg_match('/^(.{6})(.*?)$/', $str, $result);
echo $result[1]; // 'BCT343'
echo $result[2]; // '85Z0000N07518Z'
或者如果你想要一个if语句:
$str = ...;
if (preg_match('/^BCT343/', $str)) {
// yes!
}