我一直在寻找可以匹配一些以HTML字符串中的指定模式开头的类名称的时间。 这是我终于想出的正则表达式:
/(?<=(<[^>]*class=("|')(\w|\ |\-)*))((?<= |\'|\")(foo-|-foo)[^ "']*)/gmi
我一直在使用的示例是:
<body>
<div style="margin-left:6px;" class="foo-pink blfoo-pin-foo-kue red yellow bar-green -moz-FF foo-pink moz-FF foo-pink" >
<fieldset class="foo customClass foo clFieldsBar bar-try" id="idField foo- bar-dfgdgdfg">
<legend><span>Qu'en pensez-vous ?</span></legend>
< id="idText" class='foo- Comment_text fdgdgdfg -foo-ddede mso-whitespace' name="nameText barName"></textarea> bar-deded foo-green
</fieldset>
class="blue dffsf sdf mso-green foo"
</div>
您可以在此处看到以下RegEx实际执行的操作: https://regex101.com/r/6W5AUT/4
问题是我需要在Delphi代码中执行正则表达式。但是,当我这样做时,出现以下错误:
后置断言的长度不是固定的
在经过一些快速研究(错误原因之后)后,我发现我不能使用可变长度的负向后方。
我一直在尝试使用不同的方法(例如,用\ K重设匹配项)来转换RegEx,这就是我到目前为止想出的:
/(<[^>]*class=("|'))(\b(foo)(\w|\-)*)*/gmi
您可以看到它在这里工作: https://regex101.com/r/zeQDrK/2
如您所见,它仅与标记中每个类属性的第一个类名匹配。
现在就我所需要的精确地说吧
对于解决此问题的任何帮助,我将不胜感激。 感谢您的宝贵时间。