如何将正则表达式与特殊字符匹配",(在C#中

时间:2017-08-29 15:37:38

标签: c# regex

我在读取文件后生成了以下字符串。

  

"神经计算的方法是捕捉大脑解决这些问题并将其应用于计算机系统的指导原则。" (:14)" 1.2大脑结构" (:16)"大脑处于低水平。它包含大约一亿个(10")基本单位,称为神经元。这些神经元中的每一个都连接到大约一万个(lo4)其他神经元。" (:16)

我想要匹配的模式如下所示:"string" ( :digit+ )

它的输出将是:

  

神经计算的方法是捕捉大脑解决这些问题并将其应用于计算机系统的指导原则。
  1.2大脑的结构
  大脑处于低水平。它包含大约一亿个(10")基本单位,称为神经元。这些神经元中的每一个都连接到大约一万个(lo4)其他神经元。

我是正则表达的新手。我用过

var reg = new Regex("\".*?\"");

它可以匹配双引号内的内容,但我如何匹配其余的模式?

3 个答案:

答案 0 :(得分:3)

有助于将其分解为您希望正则表达式执行的操作。由于您要捕获不同的群组,因此请将它们括在括号中:

你想匹配:

报价
其次是任何不是引用的东西,一次或多次;将此作为一组捕获 然后是报价
然后是括号 其次是冒号 后跟一个数字,一次或多次
然后是括号

string reg = "\"([^\"]+)\" \\( :\\d+ \\)"

答案 1 :(得分:0)

如果我理解正确,你需要检测所有(:数字)

string regex = "(\()(.){1}(:)[1-9]{1,}(.){1}(\))"

你可以在这里试试: http://regexr.com/

答案 2 :(得分:0)

  @ allows putting quotes in a string. So you can use this
  in regex search pattern.

  var st = @" ""1.2 THE STRUCTURE OF THE BRAIN"" (:15) )";

            List<string> result = new List<string>
                                (Regex.Matches(st, @" ""\d+\.\d+[\w\s]+""\s+\(:\d+\)")
                                .Cast<Match>()
                                .Select(x => x.Value)
                                .ToList());

            //  "1.2 THE STRUCTURE OF THE BRAIN" (:15)

    ""\d+\.\d+[\w\s]+"" ===>  "1.2 THE STRUCTURE OF THE BRAIN"
    \s+\(:\d+\)         ===>  (:15)