[英]Regex match between two strings that might contain another string
我正在做一个正则表达式,试图匹配以下字符串:
.\SQL2012
在这两个字符串中(它们包含在另一个较大的字符串中,但是在这种情况下不相关):
/SERVER "\".\SQL2012\""
/SERVER .\SQL2012
因此,在某些情况下,匹配之前的"\\"
和匹配之后的\\""
都可能被省略。 我想出的正则表达式(来自StackOverflow上一个问题)如下:
(?<=\/SERVER\s*(?:[""\\""]+)?)\w+(?=(?:[\\""""]+|$)| )
如果我尝试匹配TEST_SERVER
而不是.\\SQL2012
,因为\\w
与特殊字符不匹配。 有没有办法匹配任何东西,直到\\""
或出现空格?
我正在C#中执行此操作,这是我的代码:
string input = "/SERVER \"\\\".\\SQL2012\\\"\"";
string pattern = @"(?<=\/SERVER\s*(?:[""\\""]+)?)\w+(?=(?:[\\""""]+|$)| )";
Regex regEx = new Regex(pattern);
MatchCollection matches = regEx.Matches(input);
foreach (Match match in matches)
{
Console.WriteLine(match.ToString());
}
Console.ReadKey();
在前行之前添加单词边界\\b
,
string input = "/SERVER .\\SQL2012";
Regex rgx = new Regex(@"(?<=\/SERVER\s+""\\"").*?\b(?=\\""""|$| )|(?<=\/SERVER\s+).*?\b(?= |$)");
foreach (Match m in rgx.Matches(input))
Console.WriteLine(m.Groups[0].Value);
Console.WriteLine(input);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.