解析正则表达式忽略引号之间的模式

时间:2017-12-12 11:38:05

标签: regex

抱歉我的英文不好

我的示例文本是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.@
你能告诉我怎么做吗?

1 个答案:

答案 0 :(得分:0)

根据你的正则表达式方言,这样的东西会在结束楔形之前跳过双引号属性值。

<[Dd][Ii][vv]( [A-Za-z0-9_]*="[^"]*")* *>

带括号的表达式( [A-Za-z0-9_]="[^"]")*匹配一个空格,后跟一个属性名称,一个等号,一个双引号,任何不是双引号的字符数(方便地包括<和{{1} }),以及结束双引号。括号后的星号表示接受此次零次或多次。我也增加了在最终收盘价之后有空位的可能性。

没有办法真正完全覆盖编写良好的HTML中的每个变体,更不用说真实世界的HTML,使用正则表达式。如果您需要HTML解析器,请使用HTML解析器,使其具有健壮性,可读性,准确性和可扩展性。