1

我想匹配包含以下内容的文本:
MyValue="{NON_SPACEs}{SPACE_ONE_OE_MORE}{NON_SPACEs}"

图案:

MyValue="(\S*)(\s+)(\S*)"

文本示例:

sometext MyValue="val1 val2" sometext="xyz"

我的模式也匹配的问题:

sometext MyValue="val1val2" sometext="xyz" (val1 和 val2 之间没有空格)

我用它来测试:http ://regexpal.com/

4

2 回答 2

1

将您的非空格字符限制为非引号:

MyValue="([^\s"]*)(\s+)([^\s"]*)"

此正则表达式不会尝试跨越多个引用值。


考虑删除部分或全部这些括号,尤其是在空格周围,除非您需要捕获一个组。

于 2013-01-01T13:11:12.613 回答
-1

这就是您要查找的内容:

using System;
using System.Text.RegularExpressions;

namespace ConsoleApplication1
{
  class Program
  {
    static void Main(string[] args)
    {
      string txt="abc xyz";

      string re1=".*?"; // Non-greedy match on filler
      string re2="(\\s+)";  // White Space 1

      Regex r = new Regex(re1+re2,RegexOptions.IgnoreCase|RegexOptions.Singleline);
      Match m = r.Match(txt);
      if (m.Success)
      {
            String ws1=m.Groups[1].ToString();
            Console.Write("("+ws1.ToString()+")"+"\n");
      }
      Console.ReadKey();
    }
  }
}

希望能帮助到你 :)

于 2013-01-01T13:17:13.847 回答