正则表达式没有空格的符号

时间:2016-06-29 01:30:59

标签: regex

这是我的正则表达式:{{[^\{\s}]+\}}

我的输入是{{test1}}{{test2}}{{test3}}

如何使用regex表达式通过数组获得这3个测试?

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
                )

        )

)