我正在尝试使用正则表达式选择两个符号之间的所有字符和单词:{
和}
我想这样做是为了使用OmegaT或Trados翻译一些php tpl文件。
我确信这很简单,但不能自己制作,有人可以帮忙吗?
示例:
{if $smarty.session.id_admin && $sm.admin_panel}
需要选择和标记所有这一行(在OmegaT中用于分段)
答案 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令牌
解析工作。