我有这些:
<!--{tag}-->
和
<!--{tag(integer)}-->
和
<!--{tag('argument1')}-->
和
<!--{tag('argument1', 'argument2',... 'argumentn')}-->
我正在寻找可以处理所有这些的单一模式,我已经尝试了第一个,但我不知道第二个模式,到第四个:
<!--\{tag\}-->
PS: *参数可以是整数(没有引号)或带单引号的字符串(或双引号)。 *模式可以提取参数
中的信息由于
答案 0 :(得分:1)
它不漂亮,但这就是我提出的:
<!--\{tag(?:\(((?:\d+)|(?:'\w+')|(?:(?:['"]?\w+['"]?,\s*){1,}['"]?[\w\d]+['"]?))\))?\}-->
您可see from the regexer表示它与您的每个测试用例相匹配。
但是,它也会匹配以下测试用例,我将其留给OP来确定如何纠正。
<!--{tag(argument1, 2)}--> (missing quotes around string arguments)
<!--{tag("argument1', 2)}--> (unmatched single and double quotes)
<!--{tag(2, "arg)}--> (missing unmatched quotes)
答案 1 :(得分:0)
<!--\{tag(\([0-9]+|'[a-zA-Z0-9]+'\))?\}-->
可能存在一些逃避问题,我现在还没有真正的环境进行测试,但该模式应该有效。
你基本上都在寻找标签,它可以选择在括号中加上两个额外的后缀之一。
答案 2 :(得分:0)
使用此正则表达式<!--\{tag.*?\}-->
对于提取参数使用(?<=<!--\{tag).*?(?=\}-->)