【发布时间】:2015-03-10 06:46:13
【问题描述】:
我正在尝试使用正则表达式从 BBCode 获取属性 假设我有这些字符串:
[icons a="1" b='2' c="3"]
[icons d="4" e='5' f="6"]
我需要使用正则表达式来获得这样的匹配:
[
{'a', '1', 'b', '2', 'c', '3'},
{'d', '4', 'e', '5', 'f', '6'}
]
我想出了这个正则表达式:
\[icons[\w\s](?:(\w*)\=["|']([^"|']*))+.*?\]
但它只匹配:
[
{'a', '1'},
{'d', '4'}
]
如何匹配所有属性?
另外,为了让它更加防弹,有没有办法只匹配它找到的报价?
[icons a="1"] // GOOD
[icons a="1'] // BAD - But still a match
【问题讨论】:
-
您使用的是哪种语言?
-
对于这种情况,它是无关紧要的,但我使用 PHP。
-
@Vlad 这总是与正则表达式问题相关。就您而言,此信息告诉我们我们可以在答案中使用 PCRE 功能。
-
另外,这在 .NET 中是微不足道的,因为它的正则表达式风格实际上存储了所有遇到的捕获组。