$string='dj%a3%a3999';if(preg_match('/^[dj]{2}([(\%23)(\%a3\%a3)])((\w)+)$/i', $string,$result)){ print_r($result);}
あなたのニーズを教えてください。真ん中の部分の正規表現は非常にわかりにくいです。
/*需求就是dj一个分组%a3%a3 或者%23 是另外一个分组999是一个分组通过$result获取对应的数据。如:*/$result[0]='dj';$result[1]='%a3%a3';$result[2]='999';
$s = 'dj%a3%a3999';preg_match('/([^%]+)((?:%a3|23)+)(.+)/', $s, $r);print_r($r);Array ( [0] => dj%a3%a3999 [1] => dj [2] => %a3%a3 [3] => 999 )
これを使用します:
$string='dj%a3%a3999';if(preg_match('/^([dj]{2})([%a3]+)(\d{3})$/i', $string,$result)){ print_r($result);}
([0] = & gt; dj%a3999 [1] = & gt; dj [2] = & gt;%a3%a3 [3 ] = & gt; 999)
$s = 'dj%23999'; の場合は機能しません。
これを使用します:
Array ( [0] => dj%a3%a3999 [1] => dj [2] => %a3%a3 [3] => 999 )
または
preg_match('/([^%]+)((? :%a3|%23)+)(.+)/', $s, $r);正規表現ルールの説明には次のものが含まれます。
操作中にあいまいさが発生した場合は、列を 1 つずつリストする必要があります。括弧で囲んでください
明らかに (?:%a3|23) % は a3 と結合されているため、曖昧さが生じています
上司、?: を含む正規表現がたくさんあるようですが、説明してもらえますか?これが事実かどうかを知るにはどうすればよいでしょうか?
(?:...) は (...) と同じ効果がありますグループ化しましたが、結果が結果セットに表示されません 🎜 🎜 上司、次のようなアドレスを照合するのを手伝ってくれませんか: 🎜 🎜 www.sohu.com、www.baidu.com、www.yahoo.com.n 🎜 🎜この方法で接続できる URL の最大数は 9 で、sohu.com、baidu.com、yahoo.com.cn 🎜 🎜 (?!(w))(w+(-w+)*)(.( w+(-w+)*))* 🎜