使用正则表达式从HTML/文本文件中提取字符串的一部分

本文关键字:提取 字符串 一部分 文件 文本 正则表达式 HTML | 更新日期: 2023-09-27 17:50:02

我有一个c#正则表达式来匹配文本文档中的作者名称,写为:

"author":"AUTHOR'S NAME"

正则表达式如下:

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

返回"author":"AUTHOR'S NAME。但是,我不想在前面加上引号或单词Author。我只想知道名字。

谁能帮我得到期望值?

使用正则表达式从HTML/文本文件中提取字符串的一部分

使用正则表达式组获取字符串的一部分。( )作为捕获组,可通过.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];

您也可以使用遍历方法只获取匹配值:

var txt = "'"author'":'"AUTHOR'S NAME'"";
var rgx = new Regex(@"(?<=""author"":"")[^""]+(?="")");
var result = rgx.Match(txt).Value;

对于这个输入字符串,我的regex产生每秒555,020次迭代的速度,这应该足够了。

result将会是AUTHOR'S NAME

(?<="author":")检查在匹配之前是否有"author":", [^"]+看起来很安全,因为您只想匹配字母数字和引号之间的空格,(?=")检查尾随引号。