Regex 用于在BB代码(如标记)中查找属性的正则表达式
我需要一个正则表达式的帮助,以确定像BB代码这样的标记是否包含属性 我有一个[col]代码,它可以具有类和桌面等属性。我想忽略所有具有桌面属性的文件 我想到的是:Regex 用于在BB代码(如标记)中查找属性的正则表达式,regex,Regex,我需要一个正则表达式的帮助,以确定像BB代码这样的标记是否包含属性 我有一个[col]代码,它可以具有类和桌面等属性。我想忽略所有具有桌面属性的文件 我想到的是: \[\bcol(?!\b.*桌面)。* 它适用于测试用例1和2,但如果它们在同一行上,则不适用于用例3。对于测试用例3,它应突出显示不带desktop属性的两列 测试用例: 1 [col class="blue" desktop=8] [/col] [col] [/col] 2 [col class="green"]
\[\bcol(?!\b.*桌面)。*
它适用于测试用例1和2,但如果它们在同一行上,则不适用于用例3。对于测试用例3,它应突出显示不带desktop属性的两列
测试用例:
1
[col class="blue" desktop=8]
[/col]
[col]
[/col]
2
[col class="green"]
[/col]
[col desktop=8]
[/col]
[col]
[/col]
3
[col class="gray"] Some Column [/col][col desktop=8 class="blue"]Another column[/col][col class="gray"]Column 3[/col]
你可以用
\[col\b(?!(?:(?!\[col\b).)*?\bdesktop=).*?\[/col]
请参阅。该模式需要点调用修改器,或将
替换为[\s\s]
详细信息
-一个完整的“单词”\[col\b
[col
-如果模式立即匹配到当前位置的右侧,则匹配失败的负前瞻:(?!(?:(?!\[col\b.)*?\bdesktop=)
-任何不以整个单词开头的字符(?:(?!\[col\b.)*?
序列,零次或多次出现,尽可能少[col
-一个完整的“单词”\bdesktop=
桌面=
-任何0+字符,尽可能少*?
-a\[/col]
子字符串(在某些情况下,[/col]
需要转义)/
(?s)\[col(?![^\[]*桌面)。*?\[/col\]
应该匹配除桌面之外的所有内容。请让我知道这是否有效,并解释正则表达式。您可以尝试(使用dotall修饰符)@WiktorStribiżew,非常感谢!