字符串占位符和正则表达式

时间:2011-07-11 09:47:16

标签: c# regex silverlight

我创建了一个方法,可以搜索字符串占位符,这是我使用正则表达式。 目前,我尝试通过添加分组功能来扩展此方法。

例如,如果我有这个字符串:

"Hallo {g:test1} asdasd {p:test1} sdfsdf{o:test1}"

我想:

  1. 搜索字符串test1,即使有一个字母:(比如g :)。
  2. 我想搜索:所有字符串,例如g:之前的字符串。
  3. 我无法弄清楚如何在C#中做到这一点有人可以帮助我吗?

    目前我编程了这个:

    private string test() {
          string pattern = @"\{(.*?)\}";
          string query = "Hallo {g:test1} asdasd {p:test1} sdfsdf{o:test1}";
    
          var matches = Regex.Matches(query, pattern);
    
          foreach (Match m in matches) {
            Test = m.Groups[1].Value;
          }
    
          return Test;
        }
    

2 个答案:

答案 0 :(得分:3)

试试这个:

 \{(?:.:)?(.*?)\}

它将匹配不包括字母和冒号的文本。

要将此限制为包含特定字母的字符串:

 \{(?:#:)(.*?)\}   replacing # with the letter you are filtering on

e.g。

 \{(?:g:)(.*?)\} 

答案 1 :(得分:0)

  1. \{.:test1\}
  2. \{g:.+?\}