我正在尝试匹配不包含引号的字符串,但它们可以包含转义的引号。
当我说字符串时,我的意思是引号和字符串。
我正在使用这个正则表达式,但它不起作用。
\"(?![^\\\\]\")\"
溶液
@"""[^""\\\r\n]*(?:\\.[^""\\\r\n]*)*"""
代码(c#)
MatchCollection matches = Regex.Matches(input,@"""[^""\\\r\n]*(?:\\.[^""\\\r\n]*)*""");
foreach (Match match in matches)
{
result += match.Index + " " + match.Value + System.Environment.NewLine ;
}
答案 0 :(得分:6)
"[^"\\\r\n]*(?:\\.[^"\\\r\n]*)*"
http://www.regular-expressions.info/examplesprogrammer.html
请注意,您需要正确转义某些字符(取决于您使用的字符串文字)!以下演示:
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string input = "foo \"some \\\" text\" bar";
Match match = Regex.Match(input, @"""[^""\\\r\n]*(?:\\.[^""\\\r\n]*)*""");
if (match.Success)
{
Console.WriteLine(input);
Console.WriteLine(match.Groups[0].Value);
}
}
}
将打印:
foo "some \" text" bar "some \" text"
答案 1 :(得分:2)
试试这个
[^"\\]*(?:\\.[^"\\]*)*