将正则表达式中的通配符限制为第一次出现时,

时间:2014-05-18 14:34:56

标签: regex wildcard

如何判断通配符后面的字符使用第一次出现的字符?

我执行了以下操作以查找其中包含“title”一词的任何标记:

<(.*?)(title)(.*?)>

但很明显发生的事情是我最终将整个标签放到

的末尾

</title>

那样在

<Bla bla ="nametitle">Yada yada</title>

我想要

<Bla bla ="nametitle">

但最终会得到整个标签。

如果有人因使用正则表达式解析html而感到冒犯,请继续前进并接受我对此违法行为的道歉。我只是想找出如何正确使用我之前没有使用的通配符并按我认为合适的方式应用。谢谢。

3 个答案:

答案 0 :(得分:1)

您可以使用此正则表达式:

<title.+?>

以上匹配<title并一直遇到>

答案 1 :(得分:0)

停止在第一个>进行解析。使用您的示例,您可以执行以下操作:<(.*?)(title)([^>]*?)>

答案 2 :(得分:0)

<(?![\/]).*?title.*?>

这将在任何title标签集中找到< >,但以</开头的结束标签除外

示例: https://regex101.com/r/QFs4ny/1