0
我目前正致力于将Poedit翻译为一个网站(Smarty)。要从.tpl文件中获取所有文本,我使用正则表达式来获取{t}和{/ t}之间的数据。这样一个例子:正则表达式:读取多个括号之间的值
{t}Password incorrect, please try again{/t}
正则表达式将读取Password incorrect, please try again
并将其放置在一个.po文件。这一切工作正常。当它变得更加先进时它会出错。
有时,{t}标签之间的文本使用参数。这看起来像这样:
{t 1=$email|escape 2=$mailbox}No $1 given, please check your $2{/t}
这也很好。
真正的问题开始当我使用括号内的参数里面是这样的:当它看到第一个右括号这样的结果将是2=$mailbox}visit %1 or go to your %2
{t 1={site info='name'} 2=$mailbox}visit %1 or go to your %2{/t}
我正则表达式将会关闭。
我正则表达式是这样的:
\{t.*?\}?[}]([^\{]+)\{\/t\}|\{t\}([^\{]+)\{\/t\}
正则表达式是一个Java程序中使用。
有没有人有办法解决这个问题?
修复的方法是写一个解析器来处理嵌套括号。正则表达式不能很好地处理这类问题。 –