繁体   English   中英

正则表达式不将模式与空格和换行符匹配

[英]Regex not matching the pattern with spaces and new lines

我正在尝试从字符串“已Passed, <strong class="has_warnings">2 warning(s)</strong> 我是正则表达式的菜鸟,请帮忙。

$str_html = '
<td colspan="2" class="valid">
    Passed, <strong class="has_warnings">2 warning(s)</strong>   
</td> '

preg_match('#<td colspan="2" class="valid">(.*?)</td>#', $str_html, $data_html_errors);

实时未格式化的正则表达式可在此处找到。

http://regexr.com/39e45

您不需要使用任何捕获组。

<td colspan="2" class="valid">\s*\K.*?(?=\s+<\/td)

DEMO

您的正则表达式必须是这样的:

/<td colspan="2" class="valid">([\s\S]*)<\/td>/

您原来的Regex有一些错误:

  • . 与制表符,换行符不匹配,但您的字符串包含它们。
  • ? 是不必要的。 如果您希望td的内容是可选的,则*表示0或更大

http://regexr.com/39e48

此RegEx可能更有效:

/<td colspan="2" class="valid">(((?!<\/td>)[\s\S])+)<\/td>/

http://regexr.com/39e4n

 <td[^>]*?>(.*?)<\/td>

尝试这个。

参见演示。

http://regex101.com/r/sA7pZ0/29

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM