我有一个C#正则表达式来匹配文本文档中的作者姓名:
"author":"AUTHOR'S NAME"
正则表达式如下:
new Regex("\"author\":\"[A-Za-z0-9]*\\s?[A-Za-z0-9]*")
返回"author":"AUTHOR'S NAME
。但是,我之前不想使用引号或单词Author
。我只想要这个名字。
有人能帮助我获得预期的价值吗?
答案 0 :(得分:3)
使用正则表达式组获取字符串的一部分。 ( )
充当捕获组,可以通过.Groups
字段进行访问。
.Groups[0]
匹配整个字符串
.Groups[1]
匹配第一组(依此类推)
string pattern = "\"author\":\"([A-Za-z0-9]*\\s?[A-Za-z0-9]*)\"";
var match = Regex.Match("\"author\":\"Name123\"", pattern);
string authorName = match.Groups[1];
答案 1 :(得分:0)
您还可以使用环视方法来获取匹配值:
var txt = "\"author\":\"AUTHOR'S NAME\"";
var rgx = new Regex(@"(?<=""author"":"")[^""]+(?="")");
var result = rgx.Match(txt).Value;
我的正则表达式使用此输入字符串产生每秒555,020次迭代的速度,这应该足够了。
result
将为AUTHOR'S NAME
。
(?<="author":")
检查我们是否在匹配前"author":"
,[^"]+
看起来很安全,因为您只想匹配字母数字和引号之间的空格,(?=")
正在检查尾随报价。