如何为标题文本制作贪婪的正则表达式? [反对拖尾文字]

时间:2011-05-17 10:02:34

标签: regex

考虑以下文字:

<bla><bla text><bla>

我希望正则表达式与中间<bla text>完全匹配。我尝试\<.*?text.*?\>,但它从一开始就捕获字符串,因为它以'&lt;'开头。

非常感谢。

3 个答案:

答案 0 :(得分:3)

您如何看待

\<[^>]*text[^>]*?\>

只是不使用.抓取任何字符,在“文字”之前和之后使用>捕获除[^>]*之外的任何字符。

请参阅here on Regexr

答案 1 :(得分:2)

此正则表达式与中央<bla text>匹配,并将其捕获为第一个匹配项(包括括号):

(\<\w+? \w+?\>)

解释,它匹配:

  • a <
  • 然后,任何非空的单词字符序列(\w[a-zA-z_]的简写)
  • 然后只有一个空格
  • 然后另一个“贪婪”的单词字符序列
  • 最终>

也就是说,它匹配完全两个由完全一个空格分隔的单词,全部包含在<..>中。

这一个:

(\<\w+?\s+\w+?\>)

也匹配两个单词之间的任意数量的空格。

最后,这一个:

<\w+?>(\<\w+? \w+\>)<\w+?>

匹配所有字符串,但捕获中心块的内容,因此,如果要替换<bla><bla text><bla>字符串,可以使用$1或{{1来引用中心块在替换字符串中。

答案 2 :(得分:1)

这是你的正则表达式。

/>(<bla.*?>)/