Php <;的正则表达式--{tag}-->;或者<--{tag(string | integer | etc)}-->;?

Php <;的正则表达式--{tag}-->;或者<--{tag(string | integer | etc)}-->;?,php,regex,Php,Regex,我有: <!--{tag}--> 及 及 及 我正在寻找一种模式,可以处理所有这些模式,我在第一种模式中尝试过这种模式,但我不知道第二种模式,到第四种模式: <!--\{tag\}--> 附言: *参数可以是整数(不带引号)或带单引号(或双引号)的字符串。 *模式可以提取参数中的信息 谢谢 可能有一些逃避问题,我现在没有真正的环境来测试,但是模式应该可以工作 基本上,您可以查找标记,它可以选择在括号中包含两个额外后缀中的一个。使用此正则表达式

我有:

<!--{tag}--> 




我正在寻找一种模式,可以处理所有这些模式,我在第一种模式中尝试过这种模式,但我不知道第二种模式,到第四种模式:

<!--\{tag\}-->

附言: *参数可以是整数(不带引号)或带单引号(或双引号)的字符串。 *模式可以提取参数中的信息

谢谢


可能有一些逃避问题,我现在没有真正的环境来测试,但是模式应该可以工作

基本上,您可以查找标记,它可以选择在括号中包含两个额外后缀中的一个。

使用此正则表达式

对于提取参数,请使用
(?这并不漂亮,但这是我想到的:

<!--\{tag(?:\(((?:\d+)|(?:'\w+')|(?:(?:['"]?\w+['"]?,\s*){1,}['"]?[\w\d]+['"]?))\))?\}-->

您可以确定它与您的每个测试用例都匹配

但是,它还将匹配以下测试用例,我将由OP决定如何更正这些测试用例

<!--{tag(argument1, 2)}--> (missing quotes around string arguments)
<!--{tag("argument1', 2)}--> (unmatched single and double quotes)
<!--{tag(2, "arg)}--> (missing unmatched quotes)
(字符串参数周围缺少引号)
(不匹配的单引号和双引号)
(缺少不匹配的引号)

请稍候,我来检查一下。谢谢您的模式无法通过:或者,它无法提取()中的信息。好的,很抱歉,我应该编辑这篇文章以便更清楚。你也可以先自己试试。*有关一些有用的工具,或更好的教程,请参见和。是的,谢谢,但我在这里寻找复杂模式的解决方案。对的请求通常是离题的。主要网站的目的是编码方法,而不是现成的解决方案。@mario:但我的观点是对于regex模式,不仅仅是代码。如果你对preg_match php有疑问,那是在“无异议”的背景下。我不强迫别人创建它,也不需要生气。这是一次真正的询问。你也没有提到(谷歌/搜索),所以要求是合法的。您可以通过发布示例代码来避免这种情况,尤其是即使它是错误的或不完美的。这样,您也可以避免获得您可能已经尝试过的内容的冗余建议。好的。它并不完美,但这正是我要寻找的。我必须对其进行改进。谢谢:)看起来非常适合断言和提取。我已经为这种情况做了一个spacey
/x
正则表达式,为超精确/复杂的情况做了命名模式的
?(DEFINE)
。用第二个正则表达式来拆分参数更容易。@mario:事实上,这不是完美的答案,我必须将这个模式与我自己的场景和谷歌中的模式结合起来并加以改进。你只是傲慢的兄弟,你觉得你在这里是高级和优越的。就这样
<!--\{tag\}-->
<!--\{tag(\([0-9]+|'[a-zA-Z0-9]+'\))?\}-->
<!--\{tag(?:\(((?:\d+)|(?:'\w+')|(?:(?:['"]?\w+['"]?,\s*){1,}['"]?[\w\d]+['"]?))\))?\}-->
<!--{tag(argument1, 2)}--> (missing quotes around string arguments)
<!--{tag("argument1', 2)}--> (unmatched single and double quotes)
<!--{tag(2, "arg)}--> (missing unmatched quotes)