文字列から数字と文字を分割したいのですが、問題があります。
次のような入力:
入力例 1 :A5
入力例 2 :C16
入力例 3 :A725
入力例 4 :X05
結果は次のようになります:
結果例 1 :'A','5'
結果例 2 :'C','16'
結果例 3 :'A','725'
結果例 4 :'X','05'
私はベロ正規表現で試してみましたが、良い結果が得られません:
preg_split('/(?=\d+)/', $input)
また、選択された空の文字列が 2 桁の中間にならないように、否定の後読みを追加する必要があります。
現在、 stringA725
の場合、正規表現は7
、 、2
および5
の前の空の文字列で分割されます。これらのすべての後に少なくとも 1 つの数字が続くためです。
次の正規表現を使用できます。
preg_split('/(?<!\d)(?=\d+)/', $input)
以下を使用できます。
$s = 'A5,C16,A725,X05';
if (preg_match_all("~(?>[a-z]+|\d+)~i", $s, $arr))
var_dump($arr[0]);
与えます:
array(8) {
[0]=>
string(1) "A"
[1]=>
string(1) "5"
[2]=>
string(1) "C"
[3]=>
string(2) "16"
[4]=>
string(1) "A"
[5]=>
string(3) "725"
[6]=>
string(1) "X"
[7]=>
string(2) "05"
}