这是我的正则表达式:{{[^\{\s}]+\}}
我的输入是{{test1}}{{test2}}{{test3}}
。
如何使用regex表达式通过数组获得这3个测试?
答案 0 :(得分:0)
test[0-9]+
这匹配testX
的所有出现,其中X
是任意大小的整数。
如果您正在尝试识别大括号,请使用:
[{\}]
答案 1 :(得分:0)
C#使用Matches方法返回MatchCollection对象。 这是一些代码,
Regex r = new Regex(@"{{[^{\s}]+}}");
MatchCollection col = r.Matches("{{test1}}{{test2}}{{test3}}");
string[] arr = null;
if (col != null)
{
arr = new string[col.Count];
for (int i = 0; i < col.Count; i++)
{
arr[i] = col[i].Value;
}
}
答案 2 :(得分:0)
我会用:~\{\{([^}]+?)\}\}~
访问数组取决于您的语言!
[编辑]添加解释
~
:delimiter \{\{
,\}\}~
:字面匹配字符。应该
逃脱了。[^}]
:匹配{{}}
内的所有内容,直到}
+
:重复一遍
模式多次(对于多个字符)?
:是为了'懒惰'
尽可能少地匹配。()
:捕捉:)
[编辑]添加PHP代码示例以匹配插图:
<?php
$string= "{{test1}}{{test2}}{{test3}}";
if (preg_match_all("~\{\{([^}]+?)\}\}~s", $string, $matches))
{
print_r(array($matches));
// Do what you want
}
?>
将输出:
Array
(
[0] => Array
(
[0] => Array
(
[0] => {{test1}}
[1] => {{test2}}
[2] => {{test3}}
)
[1] => Array
(
[0] => test1
[1] => test2
[2] => test3
)
)
)