1
1
简明的有很多方法可以做到这一点。最好的方法可能是使用XML解析器。我一定会读的 this post 这讨论了正则表达式的使用,特别是在XML中。 正如你所见,你的问题有很多答案。这还取决于您使用的语言,因为正则表达式引擎不同。一些人接受反向引用,而其他人则不接受。我将在下面发布多种方法,这些方法在不同的情况下/针对不同的regex口味。您可能可以从下面的多个正则表达式方法中拼凑出最适合您的部分。 密码方法1这种方法几乎适用于任何正则表达式风味(至少是正常风味)。
该方法仅检查属性值的开始和结束标记
类似地,以下方法添加了更多 价值 到上述表达式
另一种选择是(在我回答下面的评论之后),如果你想抓住每个属性
除了
具体来说,你可以使用以下方法。注意,我使用
方法2这种方法只适用于允许反向引用的正则表达式。显然,JGsoft应用程序、Delphi、Perl、Python、Ruby、PHP、R、Boost和Tcl支持单位数反向引用。JGsoft应用程序、Delphi、Python和Boost支持两位数的反向引用。信息依据 this article about numbered backreferences from Regular-Expressions.info
该方法使用反向引用来确保在属性值的开始和结束处使用相同的结束标记,并且还包括在
方法3此方法与 方法2 但也允许不带分隔符的属性(请注意,分隔符现在被视为空格字符,因此,它将只匹配到下一个空格)。
方法4虽然 方法3 如果成功,一些人可能会抱怨属性值可能是两个组中的任何一个。这可以通过以下任一方法解决。 方法4。A. 分支重置组仅在少数语言中可用,特别是JGsoft V2、PCRE 7.2+、PHP、Delphi、R(启用PCRE)、Boost 1.42+ Regular-Expressions.info
这还显示了如果不可能反向引用并且希望匹配多个分隔符,则将使用的方法(
方法4。B 通常不支持重复的子模式。看见 this Regular-Expresions.info article 有关更多信息
此方法使用
后果输入
输出下面的每一行代表一个不同的组。新的匹配项由两行分隔。
解释我将解释中使用的正则表达式的不同部分 密码 这样您就可以理解这些部分的用法。这更多地是对上述方法的参考。
|
2
1
对于
易于理解的
来,大家一起
|