我想匹配包含以下内容的文字:
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/
答案 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();
}
}
}
希望它有助于:)