使用正则表达式匹配特定标记

时间:2010-08-21 09:06:53

标签: regex

我有以下标签:

<a href="News_ViewStory.asp?NewsID=5215"> Some Text </a>
<a href="News_ViewStory.asp?NewsID=5216"> Some Text </a>
<a href="News_ViewStory.asp?NewsID=5217"> Some Text </a>

我想匹配Tag的开头'

<a href="News_ViewStory.asp?NewsID=5215">
<a href="News_ViewStory.asp?NewsID=5216">
<a href="News_ViewStory.asp?NewsID=5217">

变体部分是新的ID号。

感谢。我正在使用C#。

3 个答案:

答案 0 :(得分:1)

我建议您尝试使用HTML解析器而不是使用regexp。除了最简单的情况之外,所有这些都会减少错误(由于HTML不规则,因此不适合正则表达式)。

答案 1 :(得分:0)

如果您有其他(不需要的)&lt; a&gt;,则您没有明确说明。标签,但要获得所有&lt; a&gt;开头,你可以试试像“&lt; a [^&gt;] *&gt;”这样的正则表达式。

答案 2 :(得分:0)

正则表达式不是这项工作的最佳工具,但您实际上可以使用正则表达式匹配此模式中的字符串

<a href="News_ViewStory\.asp\?NewsID=\d{4}">

作为@-quoted C# string literal,这是:

@"<a href=""News_ViewStory\.asp\?NewsID=\d{4}"">"

\d是数字character class的简写。 {4}是完全有限的repetition。因此,\d{4}表示“正好4位数”。

如果您想允许不同的数字模式,您可以使用例如\d{2,6}。这允许2到6位数之间的任何位置。您还可以使用\d+允许至少一个数字,没有上限。

请注意,.?在上面的模式中以反斜杠开头。那是因为它们是具有特殊含义的正则表达式元字符([点]匹配(几乎)任何字符,?optional repetition specifier。转义摆脱了这些特殊含义,它们成为字面时间和问题标记

这些模式中的字符串是否正好 HTML标记,您想要的是完全不同的问题。通常不建议使用正则表达式解析HTML。