Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.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 不是gready regex没有';行不通_Php_Regex_Preg Match - Fatal编程技术网

Php 不是gready regex没有';行不通

Php 不是gready regex没有';行不通,php,regex,preg-match,Php,Regex,Preg Match,正则表达式: 我在(.*)中得到了(.*),这应该会给我预期的Nazwisko: 我做错了什么?/U意味着在贪婪和不贪婪之间切换是反向的:*是不贪婪的,*?是贪婪的。/U意味着在贪婪和不贪婪之间切换是反向的:*是不贪婪的,*?是贪婪的。我看不出有任何理由在这种模式中使用不灵活的量词。请尝试以下方法: Nazwisko : preg_match('~]*>([^' .preg_引号(“”) “~i”,$form_string,$matches); 如果td标记可以包含html内容,则可以替换(

正则表达式:

我在
(.*)
中得到了
(.*)
,这应该会给我预期的
Nazwisko:


我做错了什么?

/U
意味着在贪婪和不贪婪之间切换是反向的:
*
是不贪婪的,
*?
是贪婪的。

/U
意味着在贪婪和不贪婪之间切换是反向的:
*
是不贪婪的,
*?
是贪婪的。

我看不出有任何理由在这种模式中使用不灵活的量词。请尝试以下方法:

Nazwisko :
preg_match('~]*>([^'
.preg_引号(“”)
“~i”,$form_string,$matches);
如果td标记可以包含html内容,则可以替换
([^[^原子组)
[^(负前瞻)
)*#关闭原子组,0次或更多次
换句话说,此部分匹配:所有未<或<未后跟/td>的字符,每个字符匹配1次或以上,所有字符匹配0次或以上。 它比
(.*)
稍长一点,但效率更高

原因是正则表达式引擎必须测试每个字符(一个接一个)后面是否有ungreedy模式的

在我的模式中,正则表达式引擎测试仅当字符是
…)
而不是非捕获组
(?:…)
时,如果可能,作为一种良好的实践,您可以找到更多信息。

我看不出有任何理由在此模式中使用ungreedy量词。请尝试以下方法:

Nazwisko :
preg_match('~]*>([^'
.preg_引号(“”)
“~i”,$form_string,$matches);
如果td标记可以包含html内容,则可以替换
([^[^原子组)
[^(负前瞻)
)*#关闭原子组,0次或更多次
换句话说,此部分匹配:所有未<或<未后跟/td>的字符,每个字符匹配1次或以上,所有字符匹配0次或以上。 它比
(.*)
稍长一点,但效率更高

原因是正则表达式引擎必须测试每个字符(一个接一个)后面是否有ungreedy模式的

在我的模式中,正则表达式引擎测试仅当字符是
…)
而不是非捕获组
(?:…)
时,如果可能,作为一种良好的实践,您可以找到更多信息。

为什么
preg_quote()
是静态的(并且其中没有正则表达式元字符)?如果您使用HTML解析器而不是正则表达式,这将不会太痛苦。它仅在本例中是静态的;)在脚本中是动态的。为什么
preg_quote()
是静态的(并且其中没有正则表达式元字符)?如果您使用HTML解析器而不是正则表达式,这将不会太痛苦。它仅在本例中是静态的;)在脚本中是动态的。以前的td可以包含由包装的标签或一些隐藏的输入等。您可以添加解释吗?我知道?>是后向回望,而?是前向回望的否定,但它是如何协同工作的?@MaciejPyszyński:
(?>…)
是一个原子组,
(?以前的td可以包含被包装的标签或一些隐藏的输入,等等。你能添加解释吗?我知道?>是向后环顾,是向前环顾的否定,但它是如何一起工作的?@maciejpyszyski:
(?>…)
是一个原子组,
(?Thx,用于去掉它,但是结果是
'/(.*)。preg_quote('''/')。/i'
仍然是一样的。这个例子有些奇怪,我找不到它是什么…Thx,用于去掉它,但是结果是
'/(.*)。preg_quote('/'))./i'
还是一样。这个箱子有点奇怪,我找不到它是什么。。。
<input type='hidden' name='uid' value='60431'>Email :</td><td><input type='text' name='email'></td></tr><tr><td align=right>Imi─Ö :</td><td><input type='text' name='imie'></td></tr><tr><td align=right>Nazwisko :
Nazwisko :
preg_match('~<td[^>]*>([^<]*)</td><td[^>]*>'
          .preg_quote("<input type='text' name='nazwisko'>")
          .'</td>~i', $form_string, $matches);
(?>             # atomic group
    [^<]+       # all characters expect < one or more times
   |            # OR
    <+(?!/td>)  # < one or more times not followed by /td> (negative lookahead)
)*              # close atomic group, 0 or more times