我正在尝试获取标记内的一些文本,我称之为关键字。这是一个示例[@sometext]
。
我无法只获得文字。我正在尝试使用它,阅读HTML,我将在我的HTML中定义一些前面解释过的sometext
之类的关键字,因此我需要使用正则表达式获取sometext
而不是[@sometext]
。我怎么能这样做?
我正在使用的当前正则表达式是:\[@\w+\]
。
正则表达式将获得[@sometext]
而不是sometext
。我几乎尝试了一切。
非常感谢!
修改
解决方案是使用(?<=\[@)\w+(?=\])
,因为我使用Matches
而不是Match
方法。
答案 0 :(得分:2)
请尝试这样的事情:
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开始。
答案 1 :(得分:2)
如果要使用命名组,请将正则表达式更改为
\[@(?<Name>\w+)\]
然后你可以使用
match.Groups["Name"]
但无论你做什么,你都需要在括号中包装你想要的项目以创建捕获组
答案 2 :(得分:2)
将您的内容匹配与[
的正面观察结合以及结束(?<=\[@)\w+(?=\])
的正面预测结合起来,例如(?<=\[@)
。解释(由RegexBuddy提供):
断言下面的正则表达式可以匹配,匹配结束于此位置(正向后看)
\[
匹配字符“[”字面意思
@
字面匹配字符“@”
\w+
匹配单个字符“字符”(字母,数字等)
(?=\])
断言下面的正则表达式可以匹配,从这个位置开始(正向前瞻)
{{1}}