【发布时间】:2021-06-12 22:36:09
【问题描述】:
我不确定是否可以在一个正则表达式中完成,但问一下也无妨。
我创建了表达式:
/(?<variable>\w+)((\.(?<method>\w+)\((?<parameter>[^{}%]*)\))|(\.(?<subvariable>\w+)))?/i
这有助于我将虚线字符串“转换”为数组或调用方法:
core.settings => $core['settings']
core.set(param1, param2) => $core->set('param1', 'param2')
效果很好。但我不知道如何构建一个像这样工作的多层表达式:
- 字符串:core.settings
group <variable> = core
group <subvariable> = settings
- 字符串:core.get(param)
group <variable> = core
group <method> = get
group <parameter> = param
- 字符串 core.settings.time
group <variable> = core
group <subvariable> = settings.time
- 字符串 core.settings.time.set(param)
group <variable> = core
group <subvariable> = settings.time
group <method> = set
group <parameter> = param
有什么想法吗?以及一般情况下是否可行?
【问题讨论】:
-
如果您能写出示例 1、2 和 3 的预期输出,将会非常有帮助。
-
我希望现在更容易理解了
-
我知道您要求它纯粹使用正则表达式,但是 PHP 函数可以吗?另外你用什么来运行正则表达式?还有可能是
core.settings.time.set(param).format('Y-m-d')之类的原因吗? -
我只要求正则表达式,解析匹配效果很好。
标签: php arrays regex string qregularexpression