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

Mav*_*ang 3 c# regex

鉴于字符串:

/home   "1020....2010" main 
Run Code Online (Sandbox Code Playgroud)

我想home,10202010使用正则表达式,但继续有报价问题.谁能帮我吗?


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

string pattern [1] = @"blablabla"; string pattern [2] = @"blablabla"; ......

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

然后有错误说意外的字符"\"

Bar*_*ers 6

使用模式:

/(\w+)\s+"(\d+)\.+(\d+)"
Run Code Online (Sandbox Code Playgroud)

并且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]);
    }
}
Run Code Online (Sandbox Code Playgroud)

生产:

$1 = home
$2 = 1020
$3 = 2010
Run Code Online (Sandbox Code Playgroud)

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

编辑2

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

Regex r = new Regex(@"/(\w+)\s+""(\d+)\.+(\d+)"""); 
Run Code Online (Sandbox Code Playgroud)

  • `@`符号要求引号以不同方式转义.`@ "/(\ W +)\ S +" "(\ d +)\.+(\ d +)", ""` (4认同)