使用正则表达式从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
。我只想知道名字。
谁能帮我得到期望值?
使用正则表达式组获取字符串的一部分。( )
作为捕获组,可通过.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":"
, [^"]+
看起来很安全,因为您只想匹配字母数字和引号之间的空格,(?=")
检查尾随引号。