正则表达式选择{和}之间的所有输入

时间:2011-01-02 19:05:11

标签: regex localization internationalization task-parallel-library

我正在尝试使用正则表达式选择两个符号之间的所有字符和单词:{} 我想这样做是为了使用OmegaT或Trados翻译一些php tpl文件。

我确信这很简单,但不能自己制作,有人可以帮忙吗?

示例:

{if $smarty.session.id_admin && $sm.admin_panel}

需要选择和标记所有这一行(在OmegaT中用于分段)

6 个答案:

答案 0 :(得分:3)

"\{(.+)\}"

这就是你所需要的一切。

\{用于匹配{个字符,而\是转义字符,因为{在正则表达式中具有特殊含义。

.表示每个角色

+表示上一次出现

\}用于匹配}个字符,而\是转义字符,因为}在正则表达式中具有特殊含义。

()正如@Gabi所说的那样是为了分组,以便你能记住与正则表达式相匹配的内容。

答案 1 :(得分:2)

如果您要使用{ stuff }格式匹配多组内容,则需要确保不要在匹配中抓取}

/{([^}]*)}/

[^}]表示匹配除}以外的任何字符。

如果您想跨行匹配,则需要添加s选项:

/{([^}]*)}/s

这可以用于:

{ first one } and { second 
one }

如果您需要支持{ stuff }的嵌套集(例如{ a { b } },那么您运气不佳。

答案 2 :(得分:1)

/\{(.*)\}/将在PHP preg_match()中完成这项工作,你可以在这里测试,尽管你需要一种不同的方法来全局捕获每次出现(即preg_match_all()

答案 3 :(得分:0)

{\(.*\)}

OR(在某些编辑器/工具中):

\{\(.*\)\}

答案 4 :(得分:0)

试试这个:

\{([^}]*)\}

查找文字“{”后跟任意数量不是'}'的字符,后跟关闭文字'}'。

答案 5 :(得分:0)

这实际上需要比你想象的更多的工作。我不是php用户,但如果你是 打算抓住你可能必须考虑嵌套的'块'的内容,
在字符串内转义{}甚至正则表达式。可能你会想要一个php令牌 解析工作。