使用Regex从HTML /文本文件中提取字符串的一部分

时间:2015-05-20 08:48:57

标签: c# regex

我有一个C#正则表达式来匹配文本文档中的作者姓名:

"author":"AUTHOR'S NAME"

正则表达式如下:

new Regex("\"author\":\"[A-Za-z0-9]*\\s?[A-Za-z0-9]*")

返回"author":"AUTHOR'S NAME。但是,我之前不想使用引号或单词Author。我只想要这个名字。

有人能帮助我获得预期的价值吗?

2 个答案:

答案 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":"[^"]+看起来很安全,因为您只想匹配字母数字和引号之间的空格,(?=")正在检查尾随报价。