Regex 正则表达式强制组顺序

Regex 正则表达式强制组顺序,regex,Regex,我是regex的新手,我有个问题。 就像在这个例子中,我如何强制 src="wow" 属于第1组,以及 title="toto" 在第二组 我想以任何顺序捕获此类文本,前提是它包含: class="formula" 我做得对吗?正则表达式非常灵活且功能强大,但总的来说,它们不是解析XML、HTML或XHTML的合适工具。发件人: 正则表达式仅适用于解析严格定义的文本。因为正则表达式并不真正理解匹配的上下文,所以如果文本结构发生变化,它们可能会被极大地愚弄。特别是,正则表达式难以处理层

我是regex的新手,我有个问题。 就像在这个例子中,我如何强制

src="wow"
属于第1组,以及

title="toto"   
在第二组

我想以任何顺序捕获此类文本,前提是它包含:

class="formula"

我做得对吗?

正则表达式非常灵活且功能强大,但总的来说,它们不是解析XML、HTML或XHTML的合适工具。发件人:

正则表达式仅适用于解析严格定义的文本。因为正则表达式并不真正理解匹配的上下文,所以如果文本结构发生变化,它们可能会被极大地愚弄。特别是,正则表达式难以处理层次结构

PerlMonks解释了为什么除了最简单的案例外,regex不是一个好的解决方案。他们总结如下:

所以我希望它是清楚的:请不要试图用正则表达式解析任意的XML/HTML

你最好使用HTML解析器

但是如果你真的想使用正则表达式,你必须使用命名组来实现你想要的

<img(?=[^>]*class="formula")(?=.*(?<src>src=".*"))(?=.*(?<title>title=".*")).*>

无需使用命名组,此正则表达式src将位于组1中,而标题位于组中2@Plomging:是的,你是对的,但是当你使用命名组时会更清楚。