匹配"之间的空格"

时间:2013-01-01 13:05:15

标签: regex

我想匹配包含以下内容的文字:
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/

2 个答案:

答案 0 :(得分:1)

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

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

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


考虑删除部分或全部括号,特别是在空格周围,除非您需要来捕获一个组。

答案 1 :(得分:-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();
    }
  }
}

希望它有助于:)