私は、文字列の3つのバリエーションがあります:私は正規表現を必要とするPHP/Javascriptの正規表現 - 非キャプチャグループ
1. view=(edit:29,30)
2. view=(edit:29,30;)
3. view=(edit:29,30;x:100;y:200)
をその:までを含む
- キャプチャアップ」、30"
- キャプチャ "x:100; y:200" - 最初のマッチの後にセミコロンがあるときはいつでも。
- いずれのグループにも左端のセミコロンは含まれません。
- 最初のセミコロンの右側の文字列全体と ')'は同じグループ内にある必要があります。適用
$pat = '/view=\((\w+)(:)([\d,]+)((;[^)]+){0,}|;)\)/';
:
は私が思い付いた 'ビュー=(編集:29,30; X:100、Yは:200)' が得られます。
Array
(
[0] => view=(edit:29,30;x:100;y:200)
[1] => edit
[2] => :
[3] => 29,30
[4] => ;x:100;y:200
[5] => ;x:100;y:200
)
質問。 ';'を削除するにはどうすればいいですか?マッチ[4]と[5]から?同じRegExpは、セミコロンがない場合は 'view =(edit:29,30)'のように文字列で処理する必要があります。
$pat = '/view=\((\w+)(:)([\d,]+)((;[^)]+){0,}|;)\)/';
$str = 'view=(edit:29,30;x:100;y:200)';
preg_match($pat, $str, $m);
print_r($m);
ありがとう!