-12

正規表現を使用して分離するにはどうすればよいですか

BCT34385Z0000N07518Z
BCT34395Z0000N07518Z

BCT343フォーマットに?私はこれをmagentoに使用して、2種類のシリアル番号 BCT34385Z0000N07518ZBCT34395Z0000N07518Z分割し、正規表現に変換して、最初の6文字を識別していBCT343ます。

4

2 に答える 2

1

これらの文字列を 2 つの部分 (最初の 6 文字と残りの文字) に分割する必要がある場合は、正規表現はまったく必要ありません。あなただけでそれを行うことができますsubstr

<?php
    $str1 = substr("BCT34385Z0000N07518Z", 0, 6); // BCT343
    $str2 = substr("BCT34385Z0000N07518Z", 6); // 85Z0000N07518Z
?>

これを正規表現で行う場合は、2 つのキャプチャ グループを設定する必要があります。1 つは最初の 6 文字用で、もう 1 つは残りの文字列用です。正規表現は次のようになります。

/^(.{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で正規表現の例を参照してください。

于 2013-04-03T08:16:53.380 に答える
1

これは非常に悪い習慣ですが、あなたがそれを求めたからです:

$str = 'BCT34385Z0000N07518Z';
preg_match('/^(.{6})(.*?)$/', $str, $result);

echo $result[1]; // 'BCT343'
echo $result[2]; // '85Z0000N07518Z'

またはifステートメントが必要な場合:

$str = ...;

if (preg_match('/^BCT343/', $str)) {
    // yes!
}
于 2013-04-03T08:19:27.817 に答える