我在这里挣扎,试图弄清楚如何替换所有在特定单词后面出现的双斜线。正则表达式删除特定单词之后的重复斜线(VBScript/Classic ASP)
例子:
<img alt="" src="/pt/webf//2015//47384_1.JPG" height="235" width="378" />
<div>Don't remove this // or this//</div>
我想上面的字符串是这样的:
<img alt="" src="/pt/webf/2015/47384_1.JPG" height="235" width="378" />
<div>Don't remove this // or this//</div>
注意双斜杠已经被替换为img
标签只是一个斜线,但在离开毫发无损div
标签。我只想替换双斜杠,如果它们出现在单词后面:pt
。
我想是这样的:
(?=pt)((.*?)\/\/)+
然而,第一件事情错了,是(?=)
不做模式回溯,据我所知。也就是说,它只会查找第一个匹配模式。错误的第二件事是它不按我的意图工作。
https://regex101.com/r/kC4tA5/1
或者,也许我会对此错误的方式,因为正则表达式的支持是不是在VBScript/ASP经典膨胀,我应该试图打破了绳子和过程,而不是试图做一切正则表达式中的一切?
任何帮助,将不胜感激。
谢谢。
破碎的HTML从哪里来?源可以修复吗? – Tomalak
它是VBscript的一部分,它从大量文件中读取某些HTML标记的片段(我没有编写脚本)。我可以更正实际的文件,但这些文件是由用户创建的,因此可能会一次又一次地弹出,这就是为什么我试图解决用户ID10T错误的原因。事实上,可能有多个这样的文件。到目前为止只有一个。也许我最好使用VBScript来分解代码片段,应用正则表达式,然后重新组合起来,这可以安全地说出来吗? – user3621633
我认为它的工作方式是按照预期工作的,其中最重要的是你只能捕获最后一次迭代,按照“解释”窗格中的注释:'注意:重复捕获组将只捕获最后一次迭代。将一个捕获组放在重复组中,以捕获所有迭代,或者使用非捕获组,而不是对数据不感兴趣。 –