Соответствие определенному тегу с помощью регулярного выражения - PullRequest
1 голос
/ 21 августа 2010

У меня есть следующие теги:

<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>

Я хочу соответствовать началу тега

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

Вариант - это номер NewsID.Я использую C #.

Ответы [ 3 ]

1 голос
/ 21 августа 2010

Я бы посоветовал вам попробовать анализатор HTML, а не использовать регулярные выражения. Он будет менее подвержен ошибкам для всех, кроме самых простых случаев (из-за того, что HTML не является регулярным и поэтому не подходит для регулярных выражений).

0 голосов
/ 21 августа 2010

Регулярное выражение не лучший инструмент в работе, но вы можете использовать регулярное выражение для сопоставления строк по этому шаблону:

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

Как строковый литерал C # @ в кавычках , это:

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

\d является сокращением для цифры класса символов . {4} является точно конечным повторением . Таким образом, \d{4} означает «ровно 4 цифры».

Если вы хотите разрешить другой числовой шаблон, вы можете использовать, например, \d{2,6}. Это позволяет от 2 до 6 цифр включительно. Вы также можете использовать \d+, чтобы разрешить хотя бы одну цифру без верхней границы.

Обратите внимание, что . и ? начинаются с обратной косой черты в приведенном выше шаблоне. Это потому, что они являются метасимволами регулярных выражений, которые имеют специальные значения ([точка] совпадает (почти) с любым символом, ? - это необязательный спецификатор повторения . Экранирование избавляет от этих специальных значений, и они становятся буквальным периодом и вопросительный знак.

Являются ли строки в этих шаблонах в точности тегами HTML , что то, что вы хотите, - это совсем другая проблема. Разбор HTML с помощью регулярных выражений обычно не рекомендуется.

0 голосов
/ 21 августа 2010

Вы не можете четко заявить, что у вас будут другие (нежелательные) теги , но чтобы получить все начала, вы можете попробовать выражение типа "] *>».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...