1

我正在尝试从文本中找到与某些自定义标签匹配的正则表达式。标签的格式始终为 [!--sometext--] 或 [!--sometext:param1--]、[!--sometext:param1:param2--]。我需要做的是分别获取“sometext”部分和可选参数作为“param1:param2”或“param1”和“param2”(没关系)。

我对没有参数的标签的方法是

\[!--(.+?)--\]

但是如何以优雅的方式匹配参数部分?

4

1 回答 1

1

更新:好的,第三次应该是魅力吧?;-) 这在示例 Perl 脚本中对我有用。

这应该可以做到(我假设一个与 Perl 兼容的 reg-ex ......你没有指定你正在用什么语言编写它):

\[!--([^\]:]+):?([^\]-]+?)?--\]

这里发生了什么?

  1. 首先我们匹配[!--
  2. 然后我们对任何不是 a:或 a的东西进行匹配(并捕获)]
  3. 然后我们匹配一个可选的冒号
  4. 然后我们有一个可选的非贪婪匹配(和捕获)任何不是 a-或 a的东西](这应该一次捕获所有可选参数)
  5. 然后我们通过匹配来结束它--]

您需要拆分可选参数:以捕捉可能有多个参数的情况。

于 2012-08-29T13:05:18.537 回答