2013-06-26 3 views
0

Я хотел бы получить регулярное выражение, где у меня есть совпадение числа, но это число не обязательно должно быть частью слова «720p». Например, учитывая строку:Регулярное выражение для соответствия числам, которые не являются частью слов?

A matter of time 78 A 720p 

Я хочу только номер 78 будет матч. Какое выражение мне нужно?

+0

Посмотрите на описание используемого тега. Это легко с некоторыми двигателями регулярных выражений и с некоторыми другими. –

+1

Ответы, похоже, предполагают, что вы хотите что-то делать с корпусом «720p», но я не уверен. Вы хотите только совместить числа, которые являются целыми словами (никакие дополнительные символы не прикасаются к числу)? –

+1

Считаете ли вы, что «1.0» является числом в этом сценарии? Как насчет '1e4'? –

ответ

10

Просто

\b(\d+)\b 

То есть, только цифры, которые образуют слово.

+0

+1 очень хороший и простой подход! http://rubular.com/r/HjvVfS3bSi – acdcjunior

+1

Забыл о существовании '\ b' полностью, поэтому в моем ответе был' (\ s + | ^) '. Подтвердил свой ответ и удалил мой. –

+0

Это тот ответ, который я надеялся увидеть. OP больше всего интересуется границами слов. – Shaz

1

Если вы хотите только цифры, которые не являются частью других слов, которые вы можете использовать:

\b\d+\b 

\ Ь означает «первый или последний символ слова

Если вы явно не так. хочу номер, если за которым следует «р», то вы можете использовать:

(?>\d+)(?!p) 

Это должно соответствовать любым номерам, не следует полукокса «р»

012.

Я рекомендую использовать Expresso для создания и понимания регулярных выражений.

+0

Вам не нужна группа захвата, потому что '\ b' по существу не захватывает (т. Е. Нулевую ширину), поэтому совпадение * whole * идентично вашей группе 1. На самом деле этот ответ - это ширина волос от нисходящего , – Bohemian

+0

Спасибо, обновил ответ, чтобы удалить группу захвата –