Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何解释正则表达式_Php_Regex - Fatal编程技术网

Php 如何解释正则表达式

Php 如何解释正则表达式,php,regex,Php,Regex,我不熟悉正则表达式。为了学习它,我指的是掌握正则表达式 `My regular expression is` [a-z\s]{3,10} and the input string is cat is the cat 我正在检查这个。在输出中,如果我将正则表达式更改为[a-z\s]{1,10},我得到的结果是“cat is the”。因此,我无法得到这个输出是如何cumming的 Noramlly正则表达式引擎将从左到右扫描字符串中的匹配项。这里,实际的正则表达式是[a-z\s

我不熟悉正则表达式。为了学习它,我指的是掌握正则表达式

`My regular expression is`

    [a-z\s]{3,10}


and the input string is 

cat is the cat

我正在检查这个。在输出中,如果我将正则表达式更改为[a-z\s]{1,10},我得到的结果是“cat is the”。因此,我无法得到这个输出是如何cumming的

Noramlly正则表达式引擎将从左到右扫描字符串中的匹配项。这里,实际的正则表达式是
[a-z\s]{3,10}
,它将从一开始就匹配10个小写字母或空格字符,因为它是贪婪的
{3,10}
重复上一个令牌
[a-z\s]
最少三次,最多十次。如果该行包含长度为
9
的小写字母或空格,则此正则表达式也将与该行匹配,因为9在
3
10
范围内


[a-z\s]{1,10}
也做同样的工作,从一开始就匹配10个字符的小写字母或空格
{1,10}
将重复前面的令牌
[a-z\s]
最少1次,最多10次。因此,这也匹配一个具有单个字符的行,但上面的正则表达式匹配一个必须至少具有三个字符的子字符串。

{3,10}
表示介于3和10之间
{1,10}
表示介于1和10之间,因此两种情况下允许的最大值都是10,因此在您的示例中匹配相同的文本。谢谢。我想问的另一件事是,我的字符串是否是“ca9t是猫”,我的正则表达式是否与[a-z\s]{3,10}相同,而不是我得到的输出字符串是“t是猫”。我的疑问是,为什么它没有给出字符串“ca”而不是“t是猫”。它不会返回
ca
,因为它只有两个字符,但正则表达式期望至少匹配3个,最多匹配10个。因此,在
ca
上不可能进行匹配,但在
t上可能会进行匹配,因为cat
正常,它将对字符串中的9执行什么操作,它将跳过它。这意味着它从字符串中选择一个字符,而不是与正则表达式规则进行比较。它跳过
9
,因为我们给出的模式是
[a-z\s]
。所以这个数字不匹配
[a-z\s]{3,10}
将在至少有三个连续字符(字母或空格)的字符串上找到匹配项。在正则表达式的字符类中,[a-z\s]不包含数字,如果这样,正则表达式将失败。当它在字符串中遇到9时。