Regex查找可以在字符串中随机定位的一些值,并将它们按特定顺序排列



我有一个包含多个输入标记的htmlstring。我需要在该字符串中识别3组,并以特定的顺序替换字符串中捕获的这些组。

这里有一个无效字符串的例子:

<input style="BORDER-BOTTOM: 0px; TEXT-ALIGN: center; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff6b7; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 10px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px" onkeyup=this.value=this.name.substring(0,9); name=smartTag_Campaign_Date value=Campaign_Date size=18>

属性name, value和size需要在同一个字符串中,但与size, value和name的顺序不同。

我不能使用html解析器,不幸的是,因此我需要坚持一个正则表达式,我不能弄清楚自己。

任何想法?

对于REGEX,这种事情实际上是不可能的。放弃吧。如果你不想让这个邪恶的孩子流处女的血,就不要尝试

在我看来,DOM/[X]HTML解析器是你唯一的选择。

一个非常简单/基本的解决方案是使用下面表单的正则表达式分别捕获每个组。基本上,它查找属性的名称,捕获它后面的任何字符(用点表示),直到找到一个右括号或一个空格。请注意,这些都是非常简单的,并且需要修改以补偿html格式....中的法律更改比如等号两边的空格。但这是一个开始。Regexr.com是构建和测试regex的一个很好的工具。右边提供了一个组件库,供您从中选择,并定义了它们在正则表达式中的含义。

正如Truth所说,这不是一个非常灵活/可扩展/正确的方法来做这类事情,但它确实可以根据您的需要完成工作。

value=(.+)[s>]
name=(.+)[s>]
size=(.+)[s>]

这样你就可以更熟悉正则表达式了,下面是每个部分的更多解释:

attribute=匹配属性的确切名称,后面加一个等号
(.+)表示任何字符(注意换行…),+告诉它在序列中查找1个或多个字符。括号用于捕获组。
[s>]字符类,包含文字>字符,以及以/s

表示的空格

最新更新