Heim > Backend-Entwicklung > PHP-Tutorial > 一个正则的问题

一个正则的问题

WBOY
Freigeben: 2016-06-23 14:39:40
Original
806 Leute haben es durchsucht

$string='dj%a3%a3999';if(preg_match('/^[dj]{2}([(\%23)(\%a3\%a3)])((\w)+)$/i', $string,$result)){ print_r($result);}
Nach dem Login kopieren

匹配不上,有什么好的解决方案。


回复讨论(解决方案)

你最好讲一下你的需求吧,中间那段看你的正则很乱。

/*需求就是dj一个分组%a3%a3 或者%23 是另外一个分组999是一个分组通过$result获取对应的数据。如:*/$result[0]='dj';$result[1]='%a3%a3';$result[2]='999';
Nach dem Login kopieren

$s = 'dj%a3%a3999';preg_match('/([^%]+)((?:%a3|23)+)(.+)/', $s, $r);print_r($r);
Nach dem Login kopieren
Nach dem Login kopieren
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);}
Nach dem Login kopieren
Nach dem Login kopieren


结果:
Array ( [0] => dj%a3%a3999 [1] => dj [2] => %a3%a3 [3] => 999 )
Nach dem Login kopieren

$s = 'dj%a3%a3999';preg_match('/([^%]+)((?:%a3|23)+)(.+)/', $s, $r);print_r($r);
Nach dem Login kopieren
Nach dem Login kopieren
Array ( [0] => dj%a3%a3999 [1] => dj [2] => %a3%a3 [3] => 999 )

如果$s = 'dj%23999';则不行。

使用了这个:

$string='dj%a3%a3999';if(preg_match('/^([dj]{2})([%a3]+)(\d{3})$/i', $string,$result)){ print_r($result);}
Nach dem Login kopieren
Nach dem Login kopieren

[/code]
这个串也需要匹配的:$string='dj%23999';

$s = 'dj%23999';
preg_match('/([^%]+)((?:%(?:a3|23))+)(.+)/', $s, $r);

preg_match('/([^%]+)((?:%a3|%23)+)(.+)/', $s, $r);

正则表达式规则说明中有:
| 运算时如果发生歧义,则需要逐个开列或用括号括起来

显然 (?:%a3|23) 中 % 被结合到了 a3 从而发生了歧义

老大,能不能帮我解释下,我看到有很多的正则前面都加?:我想知道这个有什么意义?

(?:...) 与 (...) 分组作用一样,但结果不出现结果集中

(?:...) 与 (...) 分组作用一样,但结果不出现结果集中

老大,能不能帮我匹配个地址,如:

www.sohu.com,www.baidu.com,www.yahoo.com.n

这样连着的网址最多为9个,其中也可以匹配sohu.com,baidu.com,yahoo.com.cn

(?!(w))(\w+(-\w+)*)(\.(\w+(-\w+)*))*

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage