仅从正则表达式返回匹配项的一部分
说我的字符串“ User
Name:firstname.surname”包含在一个较大的字符串中,如何使用正则表达式来获取firstname.surname部分?
我尝试过的每种方法都返回字符串“ User Name:firstname.surname”,然后我必须将“ User Name:”上的字符串替换为空字符串。
后面的引用可以在这里使用吗?
编辑:
较长的字符串可能包含“帐户名:firstname.surname”,因此为什么我还要匹配字符串的“用户名:”部分以获取该值。
回答:
我喜欢使用命名组:
Match m = Regex.Match("User Name:first.sur", @"User Name:(?<name>\w+\.\w+)");if(m.Success)
{
   string name = m.Groups["name"].Value;
}
将?<something>组的开头放在括号中(例如(?<something>...)),可以使用something键作为键从匹配项中获取值(例如从m.Groups["something"].Value)
如果您不想麻烦地命名组,可以说
Match m = Regex.Match("User Name:first.sur", @"User Name:(\w+\.\w+)");if(m.Success)
{
   string name = m.Groups[1].Value;
}
并获得匹配的第一件事。(请注意,第一个带括号的组位于index 1;匹配的整个表达式位于index 0)
以上是 仅从正则表达式返回匹配项的一部分 的全部内容, 来源链接: utcz.com/qa/421121.html

![正则表达式中 [\s\S]* 什么意思 居然能匹配所有字符 [] 不是范围描述符吗?](/wp-content/uploads/thumbs/270159_thumbnail.jpg)






