Regex href соответствует номеру - PullRequest
3 голосов
/ 14 декабря 2010

Ну вот, я вернулся к регулярному выражению, и мое плохое понимание этого. Потратил больше времени на изучение этого, и вот что я придумал:

/<a href=\"travis.php?theTaco=([0-9999999])\">(.*)</a>

Я в основном хочу число в этой строке:

<a href="travis.php?theTaco=510973">510973</a>

Мое регулярное выражение почти хорошо? мой оригинал был:

"/<a href=\"travis.php?theTaco(.*)\">(.*)<\/a>/";

Но иногда мне возвращались огромные струны. Итак, я просто хочу получить только цифры. Я искал другие посты, но там так много несвязанного материала, приведите пример, ресурс или ссылку, направленную на очень связанный вопрос.

Спасибо.

Ответы [ 3 ]

4 голосов
/ 14 декабря 2010

Попробуйте использовать синтаксический анализатор HTML, предоставляемый языком, который вы используете.

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

[0-9999999] не то, что вы думаете.Это то же самое, что [0-9], что соответствует одной цифре.Чтобы соответствовать номеру, вам нужно [0-9]+.Также .* является жадным и постарается соответствовать как можно больше.Вы можете использовать .*?, чтобы сделать его не жадным.Поскольку вы пытаетесь снова сопоставить число, снова используйте [0-9]+ вместо .*.Кроме того, если записываемые два числа будут одинаковыми, вы можете просто сопоставить первое и использовать обратную ссылку \1 для второго.

И есть несколько метасимволов регулярных выражений, которые вам необходимобежать как ., ?.

Попробуйте:

<a href=\"travis\.php\?theTaco=([0-9]+)\">\1<\/a>
1 голос
/ 14 декабря 2010

Другие уже упоминали некоторые проблемы, связанные с вашим регулярным выражением, поэтому я не буду повторять их.

Существуют также вопросы относительно того, как вы указали, что именно вы хотите. Вы можете просто соответствовать через

/theTaco=(\d+)/

и возьмите первую группу захвата. Вы не предоставили нам достаточно информации, чтобы узнать, соответствует ли это вашим потребностям.

1 голос
/ 14 декабря 2010

Для захвата числа вы не используете диапазон, например [0-99999], вы захватываете цифру Что-то вроде [0-9] + больше похоже на то, что вы хотите для этого раздела. Кроме того, побег важен, как сказал codaddict.

...