首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex不将模式与空格和新行匹配

问Regex不将模式与空格和新行匹配
EN

Stack Overflow用户
提问于 2014-09-02 09:44:09
回答 3查看 44关注 0票数 0

我正在尝试从字符串Passed, <strong class="has_warnings">2 warning(s)</strong>中获取信息。我是regex的菜鸟,请帮帮忙。

代码语言:javascript
复制
$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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-09-02 10:08:07

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

代码语言:javascript
复制
<td colspan="2" class="valid">\s*\K.*?(?=\s+<\/td)

演示

票数 2
EN

Stack Overflow用户

发布于 2014-09-02 09:50:15

你的判罚一定是这样的:

代码语言:javascript
复制
/<td colspan="2" class="valid">([\s\S]*)<\/td>/

您的原始Regex有几个错误:

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

http://regexr.com/39e48

这个RegEx可能更有效:

代码语言:javascript
复制
/<td colspan="2" class="valid">(((?!<\/td>)[\s\S])+)<\/td>/

http://regexr.com/39e4n

票数 1
EN

Stack Overflow用户

发布于 2014-09-02 09:52:37

代码语言:javascript
复制
 <td[^>]*?>(.*?)<\/td>

尝尝这个。

见演示。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25620399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档