是否可以在组中使用量词?
例如。我想匹配如下内容:
- li> li> aa %
- zy %
- g1%
- 8 b %…
模式是:2个字母或数字(混合或非混合)和以%结尾的字符串…
<?php
echo preg_match('~^([a-z]+[0-9]+){2}%$~', 'a1%'); // 0, I expect 1.
我知道,这个例子不太有意义。一个简单的[list]{m,n}就能解决这个问题。这是尽可能简单的,只是为了得到一个答案。
您当然可以将量词应用于组。例如,我有字符串:
HouseCatMouseDog
还有正则表达式:
(Mouse|Cat|Dog){n}
其中n
为任意数。你可以在这里改变n
的值。
至于你的例子(是的,[list]{m,n}
会更简单),它只会工作,如果有一个字母或更多,后面跟着一个数字,或更多。因此,只有g1
将匹配。
你不需要使用2个字符类,只要一个就可以完成你的工作。
echo preg_match('~^([a-z0-9]{2})%$~', 'a1%');
<<p> RegExp意义/strong> ^ => It will match at beggining of the string/line
(
[a-z0-9] => Will match every single character that match a-z(abcdefghijklmnopqrstuvwxyz) class and 0-9(0123456789) class.
{2} => rule above must be true 2 times
) => Capture block
% => that character must be matched after a-z and 0-9 classes
$ => end of string/line