【发布时间】:2011-02-18 12:05:36
【问题描述】:
编辑:为了清楚起见,请理解我没有使用正则表达式来解析 html,这太疯狂了!我只是想清理一个凌乱的 html 字符串,以便它解析
编辑 #2:我还应该指出,我使用的控制字符是一个特殊的 unicode 字符 - 在任何正常情况下,它都不会在适当的标签中使用
假设我有一个包含一堆控制字符的 html 字符串,我想只从标签内部删除控制字符,只留下标签外部的字符。
例如
这里的控制字符是数字“1”。
输入
The quick 1<strong>orange</strong> lemming <sp11a1n 1class1='jumpe111r'11>jumps over</span> 1the idle 1frog
所需的输出
The quick 1<strong>orange</strong> lemming <span class='jumper'>jumps over</span> 1the idle 1frog
到目前为止,我可以匹配包含控制字符的标签,但我无法在一个正则表达式中删除它们。我想我可以在我的比赛中执行另一个正则表达式,但我真的很想知道是否有更好的方法。
我的正则表达式
请记住,这仅匹配包含控制字符的标签。
<(([^>])*?`([^>])*?)*?>
非常感谢您的时间和考虑。
伊恩·弗雷泽
【问题讨论】:
-
再次声明显而易见的......stackoverflow.com/questions/1732348/…
-
是的,是的,是的,我知道,我知道。但我没有解析 html。当人们在同一个句子中看到 html 和 regex 时,他们会立即得出结论。在这种情况下,碰巧我正在使用 html,但这个问题可能适用于任何类型的字符串:“我想删除 '!' 的所有实例大括号之间的字符”。这是同一类问题 - 字符串的实际含义无关紧要。
-
为了记录,未处理的字符串甚至可能不会解析为 html(例如,如果控制字符落在标签名称内)。这就是为什么我想从标签内部删除它们。
-
作为建议,我会更改您的问题以描述您遇到的问题。不要决定你想要的方式。没有理由假设正则表达式是您需要的解决方案。如果您除了展示您对解决方案的尝试之外没有提及正则表达式,那么人们可以从不同的角度看待问题。
-
注明。我知道 html/regex 是一个敏感的主题,是的,我想仅仅因为我决定使用 regex 并不意味着其他人会这样做。我只是想要一个可以在一行中编写的解决方案,这就是为什么正则表达式让我觉得它是正确的工具