首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex PCRE表达

Regex PCRE表达
EN

Stack Overflow用户
提问于 2012-10-04 17:13:00
回答 1查看 307关注 0票数 1

我有一段html代码,如下所示:

代码语言:javascript
复制
<td width="24%"><b>Something</b></td>
          <td width="1%"></td>
          <td width="46%" align="center">
           <p><b>
    needed
  value</b></p>
          </td>
          <td width="28%" align="center">
            &nbsp;</td>
        </tr>

在单词Something之后提取第一个文本节点(不是标记,而是文本)的好的regex模式是什么,我的意思是要提取

代码语言:javascript
复制
     needed
  value

仅此而已。

我无法在php中找到一个有效的regex模式。

编辑:,我不是解析整个html文档,而是解析其中的几行,所以我想要做的就是使用Regex,而不使用解析器。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-04 17:33:32

忽略使用regex解析HTML的潜在问题,下面的模式应该与示例代码匹配:

代码语言:javascript
复制
Something(?:(?:<[^>]+>)|\s)*([\w\s*]+)

这将匹配Something,后面跟着任何HTML (或空格)列表,并匹配下一个文本块\w (包括空格)。

您可以在PHP的preg_match()方法中使用此方法,如下所示:

代码语言:javascript
复制
if (preg_match('/Something(?:(?:<[^>]+>)|\s)*([\w\s*]+)/', $inputString, $match)) {
    $matchedValue = $match[1];
    // do whatever you need
}

Regex解释说:

代码语言:javascript
复制
Something         # has to start with 'Something'
(?:               # non-matching group
    (?:           # non-matching group
        <[^>]+>   # any HTML tags, <...>
    )
    | \s          # OR whitespace
)*                # this group can match 0+ times
(
    [\w\s*]+      # any non-HTML words (with/without whitespace)
)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12732313

复制
相关文章

相似问题

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