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

C# 可能包含另一个字符串的两个字符串之间的正则表达式匹配,c#,regex,C#,Regex,我正在执行一个试图匹配以下字符串的正则表达式: .\SQL2012 从两个字符串(它们包含在另一个较大的字符串中,但在本例中不相关): 因此,在某些情况下,匹配前的“\”和匹配后的\”都可以省略。我提出的正则表达式(来自前面关于StackOverflow的问题)如下所示: (?<=\/SERVER\s*(?:[""\\""]+)?)\w+(?=(?:[\\""""]+|$)| ) 将单词边界\b添加到“向前看”的前面 string input = "/SERVER .\\SQL201

我正在执行一个试图匹配以下字符串的正则表达式:

.\SQL2012
从两个字符串(它们包含在另一个较大的字符串中,但在本例中不相关):

因此,在某些情况下,匹配前的
“\”
和匹配后的
\”
都可以省略。我提出的正则表达式(来自前面关于StackOverflow的问题)如下所示:

 (?<=\/SERVER\s*(?:[""\\""]+)?)\w+(?=(?:[\\""""]+|$)| )

将单词边界
\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);
string input=“/SERVER\\SQL2012”;

正则表达式rgx=新正则表达式(@“(?这有点X/Y问题的味道:你有问题X,你认为你可以用解决方案Y解决它,你在解决方案Y中发现了一个问题,现在你在解决方案Y中要求解决你的问题,而解决方案Y可能不是解决问题X的最佳方法。什么是问题X?@NateKerkhofs这可能是我读过的最复杂的评论所以。我不认为这个问题本身是不可理解的。这个问题本身是完全可以理解的,这是真的。我说的是。你的正则表达式试图解决一个我们不知道的问题。但是,你的正则表达式可能不是这个问题的最佳解决方案。我感兴趣的是,问题是你是一个什么样的人试图使用正则表达式解决问题,以防有比正则表达式更好的解决方案。当你试图对我的问题进行所有元处理时,Avinash设法回答了它。你明白我为什么对你的问题进行元处理吗?正则表达式可能不是解决实际问题的最佳解决方案。可能有更好的解决方案对于您使用正则表达式解决的问题。我只是想提供帮助。除了您试图查找“.\SQL2012”之外,我们没有上下文“在一个曾经是另一个字符串的一部分的字符串中。我们不知道您为什么要查找该字符串,或者为什么要使用该方法。检查您的上一个问题,您似乎正在尝试从字符串中提取服务器名称。这是一个配置字符串吗?这与“\”\sql2012匹配。如果字符串是“somethingelse/server\”怎么办?”\\\“\\SQL2012\\\”/something 3”(C字符串),然后匹配以下内容:“\\”\SQL2012\\”/something只需进入此处即可
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();
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);