我正在尝试从文本中找到与某些自定义标签匹配的正则表达式。标签的格式始终为 [!--sometext--] 或 [!--sometext:param1--]、[!--sometext:param1:param2--]。我需要做的是分别获取“sometext”部分和可选参数作为“param1:param2”或“param1”和“param2”(没关系)。
我对没有参数的标签的方法是
\[!--(.+?)--\]
但是如何以优雅的方式匹配参数部分?
我正在尝试从文本中找到与某些自定义标签匹配的正则表达式。标签的格式始终为 [!--sometext--] 或 [!--sometext:param1--]、[!--sometext:param1:param2--]。我需要做的是分别获取“sometext”部分和可选参数作为“param1:param2”或“param1”和“param2”(没关系)。
我对没有参数的标签的方法是
\[!--(.+?)--\]
但是如何以优雅的方式匹配参数部分?
更新:好的,第三次应该是魅力吧?;-) 这在示例 Perl 脚本中对我有用。
这应该可以做到(我假设一个与 Perl 兼容的 reg-ex ......你没有指定你正在用什么语言编写它):
\[!--([^\]:]+):?([^\]-]+?)?--\]
这里发生了什么?
[!--
:
或 a的东西进行匹配(并捕获)]
-
或 a的东西]
(这应该一次捕获所有可选参数)--]
您需要拆分可选参数:
以捕捉可能有多个参数的情况。