0

正则表达式以获取带有行号的双引号和单引号内的文本。

例如:

line 123 Processing File "This is what i am looking for"<'this is also what i need'>

输出应该是:

line 123 This is what i am looking for  this is also what i need

我的正则表达式是:

 MatchCollection matches2 = Regex.Matches(l, "\"([^\"]*)\"");

     foreach (Match match2 in matches2)
           {
                foreach (Capture capture2 in match2.Captures)
                    {
                        textBox4.Text = textBox4.Text + capture2.Value + Environment.NewLine;

                    }
            }

我得到(我的输出):

"This is what i am looking for"

我不需要双引号,我只需要引号内的文本。

4

3 回答 3

1

这里的第一个问题是您正在查看匹配而不是捕获。捕获将向您显示 ( ) 运算符收集的内容。

matches2.OfType<Match>().Select(x => x.Captures[0].Value)
于 2013-05-10T13:15:58.987 回答
0

尝试这个:

Regex.Replace(inputtext, @"line (\d+).*?\""(.*?)""\W+(.*?)'", "line $1 $2 $3")
于 2013-05-10T13:12:41.840 回答
0
string input =
    "line 123 Processing File \"This is what i am looking for\"<'this is also what i need'>";
string output =
    string.Join(" ", Regex.Matches(input, @"(line\s+(\d+)|(""|').*?\3)")
                          .Cast<Match>()
                          .Select(m => Regex.Replace(m.Value,
                                                     @"^[""']|[""']$", "")));

输出:

line 123 This is what i am looking for this is also what i need
于 2013-05-10T13:34:17.020 回答