使用Regex在标签中获取文本
本文关键字:获取 取文本 标签 Regex 使用 | 更新日期: 2023-09-27 18:17:16
我试图得到一些文本,这是一个标签内,我称之为关键字。这是一个示例[@sometext]
。
我不能得到只有文本。我正试图使用这个,阅读HTML,我将在我的HTML中定义一些关键字,如sometext
之前解释过的,所以我需要得到sometext
,而不是[@sometext]
使用正则表达式。我该怎么做呢?
当前我使用的正则表达式是这个:'[@'w+']
.
该正则表达式将得到[@sometext]
而不是sometext
。我几乎什么都试过了。
非常感谢!
编辑
解决方案是使用(?<='[@)'w+(?='])
,因为我使用Matches
而不是Match
方法。
将您对内容的匹配与[@
的积极向后看和关闭[
(如(?<='[@)'w+(?='])
)的积极向前看结合起来。解释(由RegexBuddy提供):
-
断言下面的正则表达式可以匹配,匹配在此位置结束(正向向后看)
(?<='[@)
-
匹配字符"["
'[
-
匹配字符"@"
@
-
匹配一个"单词字符"(字母、数字等)
'w+
- 在一次到无限次之间,尽可能多的次数,根据需要回馈(贪婪)
-
断言下面的正则表达式可以匹配,从这个位置开始(正向前看)
(?='])
- 匹配字符"]"字面意思«]»
如果您想使用命名组,请将正则表达式更改为
'[@(?<Name>'w+)']
则可以使用
match.Groups["Name"]
但是无论你做什么,你都需要将你正在寻找的项目括在圆括号中以创建捕获组
请尝试这样做:
string html = @"<html>[@sometext]</html>";
var regex = new Regex(@"'[@('w+)']");
var match = regex.Match(html);
Console.WriteLine(match.Groups[1]);
Console.ReadKey();
关键是要使用Group。第0组是整个匹配,这里我们需要从索引1开始。