当前位置: 首页 > 知识库问答 >
问题:

如何编写与非贪婪匹配的正则表达式?[重复]

冀俊良
2023-03-14

我需要关于非贪婪选项的正则表达式匹配的帮助。

匹配模式为:

<img\s.*>

要匹配的文本是:

<html>
<img src="test">
abc
<img
  src="a" src='a' a=b>
</html>

我在上测试http://regexpal.com

此表达式匹配中的所有文本

我尝试了非贪婪< code >的所有组合?,没有成功。

共有3个答案

骆磊
2023-03-14
匿名用户

这里的其他答案假设你有一个支持非贪婪匹配的正则表达式引擎,这是 Perl 5 中引入并广泛复制到其他现代语言的扩展;但它绝不是无处不在的。

许多更老或更保守的语言和编辑器只支持传统的正则表达式,它没有控制重复操作符< code>*贪婪性的机制——它总是匹配最长的可能字符串。

诀窍是首先限制允许匹配的内容。而不是< code >。*您似乎在寻找

[^>]*

它仍然匹配尽可能多的东西;但是有些东西不仅仅是<代码>。“任何字符”,而是“不是< code >的任何字符”

根据您的应用程序,您可能希望也可能不希望启用允许“任何字符”包含换行符的选项。

即使您的正则表达式引擎支持非贪婪匹配,也最好阐明您的实际含义。如果这是你的意思,你可能应该这样说,而不是依靠非贪婪的匹配来(希望,可能)做我的意思。

例如,在通配符之后具有尾随上下文的正则表达式,如 .*?

当然,如果你需要应付,这仍然不是你想要的

丌官运诚
2023-03-14

操作数使匹配不贪婪。例如.*是贪婪的,而.*?不是。所以你可以使用类似的东西

但请记住,整组HTML实际上不能用正则表达式进行解析。

袁亦
2023-03-14

不贪心的工作得很好。只是您需要选择点匹配您正在测试的正则表达式引擎中的所有选项(regexal,您使用的引擎也有此选项)。这是因为,当您使用.时,正则表达式引擎通常不匹配换行符。。您需要明确告诉他们您也想使用匹配换行符。

例如

<img\s.*?>

工作正常!

在此处查看结果。

另外,阅读点在各种正则表达式中的行为。

 类似资料:
  • 本文向大家介绍php正则表达式中贪婪与非贪婪介绍,包括了php正则表达式中贪婪与非贪婪介绍的使用技巧和注意事项,需要的朋友参考一下 一、贪婪与非贪婪 什么叫贪婪,比如说要从字符串中<td>面包一</td><td>面包二</td>吃面包,本来你只可以吃面包一,可是你贪心,于是就把第一个<td>到最后一个</td>里面的两个面包取出来了,你想多吃点,非贪婪也就是你不贪吃了,就只吃面包一。 我们来看看正

  • 问题内容: 我如何制作像这样的python正则表达式,使得在给定的情况下,python匹配而不是? 我知道我可以使用代替,但是我正在寻找一种更通用的解决方案,使我的regex更加整洁。有什么办法告诉python“嘿,尽快匹配它”? 问题答案: 您寻找功能强大的吗? http://docs.python.org/3/howto/regex.html#greedy-versus-non-greedy

  • 问题内容: 我有下一个代码: 并具有下一个输出: 但我认为它必须是: 有人请解释为什么。 问题答案: 由于您的模式是非贪婪的,因此它们在仍由匹配项组成的情况下,匹配的文本越少越好。 去除 ?在第二组中,您会得到 单词 word word big small

  • 问题内容: 我正在使用jQuery。我有一个带有特殊字符块的字符串(开头和结尾)。我想从特殊字符块中获取文本。我使用正则表达式对象进行字符串内查找。但是当有两个或两个以上特殊字符时,如何告诉jQuery查找多个结果? 我的HTML: 和我的JavaScript代码: 我的结果是: [|cơthử|nghiệm|] thtr trng [| test2 |đâylàtestlần2 |]chứngk

  • 本文向大家介绍Python正则表达式教程之三:贪婪/非贪婪特性,包括了Python正则表达式教程之三:贪婪/非贪婪特性的使用技巧和注意事项,需要的朋友参考一下 之前已经简单介绍了Python正则表达式的基础与捕获,那么在这一篇文章里,我将总结一下正则表达式的贪婪/非贪婪特性。  贪婪 默认情况下,正则表达式将进行贪婪匹配。所谓“贪婪”,其实就是在多种长度的匹配字符串中,选择较长的那一个。例如,如下

  • 本文向大家介绍python正则表达式的懒惰匹配和贪婪匹配说明,包括了python正则表达式的懒惰匹配和贪婪匹配说明的使用技巧和注意事项,需要的朋友参考一下 第一次碰到这个问题的时候,确实不知道该怎么办,后来请教了一个大神,加上自己的理解,才了解是什么意思,这个东西写python的会经常用到,而且会特别频繁,在此写一篇博客,希望可以帮到一些朋友。 例:一个字符串 “abcdacsdnd” ①懒惰匹配