我目前正在构建一个代码生成器,旨在在我编写模板和/或翻译后为我生成样板,无论我使用什么语言。
我对 Ruby 中的正则表达式有疑问。正则表达式旨在选择介于{{{
and之间的任何内容}}}
,因此我可以根据需要生成函数。
我的正则表达式目前是:
/\{\{\{(([a-zA-Z]|\s)+)\}\}\}/m
我的测试数据集是:
{{{Demande aaa}}} => {{{tagadatsouintsouin tutu}}}
结果是:
[["Demande aaa", "a"], ["tagadatsouintsouin tutu", "u"]]
每次正则表达式选择最后一个字符两次。这不是我想要的,我需要更像这样的东西:
/\{\{\{((\w|\W)+)\}\}\}/m
但这也有一个缺陷,结果是:
[["Demande aaa}}} => {{{tagadatsouintsouin tutu", "u"]]
鉴于,我希望得到:
[["Demande aaa"],["tagadatsouintsouin tutu"]]
如何更正这些正则表达式?我可以使用两组分隔符,但它不会教我任何东西。
编辑 :
您所有的正则表达式都针对我的数据样本运行,所以你们都明白了。
正则表达式可能是矫枉过正,可能是矫枉过正我的目的。所以我有两个问题。
首先,正则表达式是否保持相同的缩进?这应该能够处理整个功能。
其次,是否有更适合该任务的东西?
详细说明此工具的用途。我很无聊在 php - symfony 中编写样板代码。所以我希望根据模板生成这个。
我的意图是以这种方式构建一些视图、一些控制器,甚至是模型的一部分。
实际示例:在我的模型中,我希望根据对象属性的类型生成一些函数。例如,我有正确显示货币的功能。所以我需要根据我的属性构建 corect 函数,然后放入 m 输出文件中。
所以有些翻译本身需要翻译。
所以一个虚构的例子:
{{{euro}}} => {{{ function getMyAttributeEuro()
{
return formating($this->get[[MyAttribute]]);
} }}}
为了储存我的翻译,我应该使用正则表达式吗,比如
我希望构建一些有点聪明的东西,这样它就可以构建大部分没有错误的基本代码。所以我可以编写有趣的代码。