Content
<a>123456</a>7890234<a>123789</a>
7890234<a>123789</a>
(?!<a.*?)\d+(?!.*<\/a>)
オンラインで待つ必要があります
123789 も にありませんか?最初に表示される 文字と一致しますか?
文字列処理関数を使用して、最初の を検索し、先頭と末尾の位置を取得して、文字列を処理できる場合があります。
最初に改行で文字列を区切ってから、各部分文字列に対して通常のマッチングを実行することをお勧めします
主に「負のゼロ幅アサーション」の意味を理解したいと思います。誰がこの正規表現を書けるのかわかりません
それはあなたの問題を解決しませんでしたが、それを解決する過程で奇妙な問題に遭遇しました
$str = <<)\d+(?=<\/a>)/',$str,$m);// [0] => 123456preg_match_all('/(?)\d+(?!<\/a>)/',$str,$t1);/*与 或 相邻的数字没有获取到[0] => 2345[1] => 7890234[2] => 23[3] => 78单独测试 123也是只能获取到 23*/$str_space = << 123456 7890234 123789 EOF;preg_match_all('/(?)\d+(?!<\/a>)/',$str_space,$t2);/*而在 或 相邻的数字加一个空格就可以了[0] => 123456[1] => 7890234[2] => 123[3] => 789*/echo "";print_r($m);print_r($t1);print_r($t2);echo "";
ご協力ありがとうございます
おはようございますこの問題の解決策はありませんか?
一致するものだけです 123456 に到達するのは非常に簡単ですそれを削除すれば、残りは必要なものになりますか?
$s =<<< TXT<a>123456</a>7890234<a>123789</a>TXT;$p = '#\d+[\r\n]+#';preg_match_all("/[^\r\n]+/", preg_replace($p, '', $s), $m);print_r($m);
Array( [0] => Array ( [0] => 7890234 [1] => <a>123 [2] => 789</a> ))