变量顺序正则表达式语法

Vir*_*dia 6 html regex html-parsing

有没有办法表明两个或更多的正则表达式短语可以按任何顺序出现?例如,XML属性可以按任何顺序编写.假设我有以下XML:

<a href="home.php" class="link" title="Home">Home</a>
<a href="home.php" title="Home" class="link">Home</a>
Run Code Online (Sandbox Code Playgroud)

我如何编写一个匹配类和标题的匹配并适用于这两种情况?我主要是寻找允许我检查任何顺序的语法,而不仅仅是匹配类和标题,因为我能做到这一点.有什么方法除了包括两个组合并用'|'连接它们?

编辑:我的偏好是在单个正则表达式中进行,因为我正在以编程方式构建它并对其进行单元测试.

pax*_*blo 8

不,我相信使用单个RE进行此操作的最佳方式正如您所描述的那样.不幸的是,当你的XML有5个不同的属性时,它会变得非常混乱,为你提供大量不同的RE来检查.

另一方面,我根本不会使用RE,因为它们不是编程语言.使用XML处理库的旧式方法有什么问题?

如果您需要使用RE,这个答案可能无济于事,但我相信使用正确的工具来完成工作.

  • 大多数HTML都不是有效的XML.所以你实际上需要一个HTML解析库.根据您尝试提取此信息的原因,可能无法保证在某个库周围编写应用程序.也许这只是一次性的事情,你想得到一些粗略的信息. (2认同)

小智 5

你考虑过xpath吗?(属性顺序无关紧要)

//a[@class and @title]
Run Code Online (Sandbox Code Playgroud)

将两个<a>节点都选为有效匹配.唯一需要注意的是输入必须是xhtml(格式良好的xml).