RegEx没有做我想做的事

时间:2013-05-20 00:15:10

标签: .net regex vb.net string

我想要检索一个字符串的一部分,我的问题是我是否可以获得正确的字符串而不触及匹配的字符串(子字符串或拆分),我知道很容易做一个分割/子字符串但是我想知道是否我可以改进RegEx来完成这项工作。

这是字符串:

<h3 class="btl"><a href="http://post-hardcore.ru/music/2689-drifter-in-search-of-something-more-ep-2013.html">Drifter - In Search of Something More [EP] (2013)</a></h3>

这就是我得到的:

>Drifter - In Search of Something More [EP] (2013)</a><

这就是我想要的:

Drifter - In Search of Something More [EP] (2013)

这是我的RegEx:

Dim RegEx_AlbumName As New Regex(">[^<].*<")

MsgBox(RegEx_AlbumName.Match(Line).Groups(0).ToString)

我不想这样做:

AlbumName = RegEx_AlbumName.Match(Line).Groups(0).ToString.Substring(1).Replace("</a><", "")

编辑:请注意,括号中的单词“(2013)”可能不在我需要匹配的其他字符串中。

1 个答案:

答案 0 :(得分:1)

你的正则表达式很接近。 [^<]仅在> .*吃完任何角色后直到最后<才对第一个角色起作用,因为它是贪婪。试试这个:

Dim RegEx_AlbumName As New Regex(">([^<]+?)<")

MsgBox(RegEx_AlbumName.Match(Line).Groups(1).ToString)

?告诉正则表达式匹配最短的字符串。只有在这种情况下,我认为没有它也会有效。