1
8
不,我相信用一个RE来做这件事的最好方法和你描述的完全一样。不幸的是,当您的XML可以有5个不同的属性时,它会变得非常混乱,给您一个 大的 要检查的不同资源数。 另一方面,我根本不会用re来做这个,因为它们不应该是编程语言。使用XML处理库的老式方法有什么问题? 如果你是 必修的 要使用Re,这个答案可能没有多大帮助,但我相信使用合适的工具来完成这项工作。 |
2
5
你考虑过xpath吗?(属性顺序不重要)
将同时选择
|
3
4
您可以为每个属性创建一个lookahead,并将它们插入整个标记的regex中。例如,标记的regex可以是
如果您在XML上使用它,可能需要更详细的说明。这个基regex本身将匹配一个属性为零或更多的标记。然后为要匹配的每个属性添加一个查找头:
这个
当然,为了清晰起见,我做了一些简单的假设。我不允许等号周围有空格,属性值周围有单引号或无引号,或属性值中有尖括号(我听说这是合法的,但我从未见过这样做)。如果需要的话,堵住这些漏洞会使regex更丑,但不需要更改基本结构。 |
4
2
可以使用命名组从标记中提取属性。运行regex,然后在组中循环执行所需的任何测试。 类似这样的情况(未测试,使用.NET regex语法和\w for word字符和\s for whitespace):
|
5
0
第一个特别的解决方案可能是执行以下操作。
这远不是完美的,因为它允许每个属性发生多次。我可以想象这可以用断言来解决。但是,如果您只想提取属性,这可能已经足够了。 |
6
0
最简单的方法是编写一个regex来获取
用一个正则表达式,你需要
这只是一个第一手的猜测,没有检查它是否有效。更容易分治问题。 |
7
0
如果要匹配一组元素的排列,可以使用反向引用和零宽度的组合 负正向匹配。 假设您想要匹配这六行中的任何一行:
您可以使用以下regex执行此操作:
后面的参考文献(
例如,在Ruby中:
对于五个元素的排列,它是:
对于您的示例,regex将是
|
lonix · 使用sed从JSON中提取非贪婪正则表达式 1 年前 |
Dima Malko · 如何在指定符号前添加符号? 2 年前 |
shekharsabale · 从列表元素捕获子字符串 2 年前 |
Katia · 根据特定规则进行多行匹配 2 年前 |
MHA · Pandas str.extract()以字母结尾的数字 2 年前 |
Slava Vir · 如何查找后面“/”之间的最后一组 2 年前 |