如何在带有C#中的引号的字符串中进行正则表达式匹配

时间:2010-11-16 20:03:07

标签: c# regex

给出字符串:

/home   "1020....2010" main 

我希望home10202010使用正则表达式,但仍然存在报价问题。谁能帮我吗?


谢谢你们的帖子。我意识到我的代码可能有一些问题。这是

string pattern [1] = @“blablabla”; string pattern [2] = @“blablabla”; ......

foreach(模式中的字符串){      if(regex.match(line,s).success){             ......       } }

然后出现意外字符“\”

的错误

3 个答案:

答案 0 :(得分:6)

使用模式:

/(\w+)\s+"(\d+)\.+(\d+)"

home(或/之后的任何其他名称)将在$1中,$2中的第一个数字和$3中的最后一个数字

编辑1

我认为@应该有效,但无法在ideone.com中编译。但这确实有效:

using System;
using System.Text.RegularExpressions;

public class RegexTest 
{
    public static void Main() 
    {
        Regex r = new Regex("/(\\w+)\\s+\"(\\d+)\\.+(\\d+)\""); 
        Match m = r.Match("/home   \"1020....2010\" main ");
        Console.WriteLine("$1 = " + m.Groups[1]);
        Console.WriteLine("$2 = " + m.Groups[2]);
        Console.WriteLine("$3 = " + m.Groups[3]);
    }
}

产生

$1 = home
$2 = 1020
$3 = 2010

试验台:http://ideone.com/TpQwf

编辑2

正如@Seattle在评论中提到的,当在正则表达式字符串之前使用方便的@时,双引号需要通过在它前面放置双引号来逃避(不是反斜杠!):< / p>

Regex r = new Regex(@"/(\w+)\s+""(\d+)\.+(\d+)"""); 

答案 1 :(得分:0)

对于上述内容,您需要以下内容:

/(\w+) "(\d+)\.+(\d+)" (\w+)

同时检查:

答案 2 :(得分:0)

如果要匹配引号字符(或其他特殊字符),可以使用反斜杠将其转义。因此,正则表达式中的\"将匹配“字符。