我的示例文本是html,但测试必须适用于任何上下文
我有这个正则表达式:“< \ b [D-d] [I-i] [V-v] \ b([^>] *)>”
我想完成它以排除所有>在引号之间,但我不知道该怎么做
请参阅下面的例子:
<div badAttribute="who put a > here?" class="exemple"> [....] </div>
预期的匹配是
<div badAttribute="who put a > here?" class="exemple">
[编辑]
另一个例子: https://regex101.com/r/BQUENO/1
我有2个关键字:开始关键字'001'和结束关键字'@' 我希望“所有001和@之间但忽略001和@之间的引号”
我开始使用这个正则表达式来排除@和引号之间的所有引号,但它不能正常工作
001("[^"]*")*([^@]*)*@
在我的脑海里
( “[^”] *“)*
表示“所有引号之间(如果存在)”但它不起作用
例如字符串
001exemple@001@001Semper exitialis "fkjfk"cum subsidia ductor notissimus subsidia et ductor cui@
001Annonas et "@"et contumaciter conspectum@
001Quo amicissimos ad uxoriae certamen pecuniae tamen ="@" dirimi "klkj @"contentione nullam.@
你能告诉我怎么做吗?
答案 0 :(得分:0)
根据你的正则表达式方言,这样的东西会在结束楔形之前跳过双引号属性值。
<[Dd][Ii][vv]( [A-Za-z0-9_]*="[^"]*")* *>
带括号的表达式( [A-Za-z0-9_]="[^"]")*
匹配一个空格,后跟一个属性名称,一个等号,一个双引号,任何不是双引号的字符数(方便地包括<
和{{1} }),以及结束双引号。括号后的星号表示接受此次零次或多次。我也增加了在最终收盘价之后有空位的可能性。
没有办法真正完全覆盖编写良好的HTML中的每个变体,更不用说真实世界的HTML,使用正则表达式。如果您需要HTML解析器,请使用HTML解析器,使其具有健壮性,可读性,准确性和可扩展性。