C#中有什么方法可以使用正则表达式,而只能返回(带有Regex.Match)正则表达式的一部分?例如,

string input = "Hello my friend!";
string pattern = "\\w+ my friend.";
Console.WriteLine(Regex.Match(input, pattern)); //Returns "Hello my friend!"


但是,如果我只想要“ Hello”,或者只是结尾处的标点怎么办?我知道我可以做类似“ ^\\w+”(甚至只是.split(' ')[0])的操作,但是那将匹配任何输入的第一个单词,并且我只希望它与其余的第一个单词匹配是否与“ my friend.”匹配,有没有办法做到这一点?

string input = "Hello my friend!";
string pattern = "\\w+ my friend.";
if (Regex.IsMatch(input, pattern))
{
    Console.WriteLine(input.Split(' ')[0]);
}
else
{
    Console.WriteLine("");
}


(很抱歉,如果这真的很简单,或者我缺少什么,我才真正开始使用Regexs)

谢谢,

马修

最佳答案

除了其他答案中建议的捕获组之外,您还可以使用前瞻性功能。因此,您可以使用"\\w+(?= my friend)"这样的表达式,整个匹配项只会返回\\w+部分。

通常,形式为a(?=b)的模式(其中ab是正则表达式)仅在后跟a但不匹配b的情况下才匹配b

关于c# - “隐藏”的RegEx?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10376394/

10-12 12:37