繁体   English   中英

正则表达式匹配可能包含另一个字符串的两个字符串之间

[英]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);

IDEONE

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM