Мне нужно сопоставить серию цифр длиной от 5 до 7 символов. Я думал, что это поможет:

([0-9]{5,7})\w+

Против этой строки:

Sample text for testing:  22 333 4444 55555 666666 7777777 

Как вы можете видеть в примере regexr, он не соответствует цифрам, имеющим 5 чисел, и соответствует цифрам длиннее 7 числа длинные.

Почему это не работает так, как я ожидал?

0
a coder 26 Янв 2015 в 20:31

2 ответа

Лучший ответ

он не соответствует цифрам, имеющим 5 номеров, и соответствует цифрам, длина которых превышает 7 цифр.

Обратите внимание, что следующий \w+ также будет соответствовать цифрам. ([0-9]{5,7})\w+ ожидает 5,6,7 цифр плюс хотя бы один символ слова. Но сразу после 55555 не существует словесного символа. Таким образом, он не может соответствовать 55555 в вашей строке ввода.

2
Avinash Raj 26 Янв 2015 в 17:46

Регулярное выражение ([0-9]{5,7})\w+ не работает должным образом, потому что:

Пример-строка: 12345

([0-9]{5,7})\w+
    ^ Matches the digits: 12345

([0-9]{5,7})\w+
             ^ Cannot match a word character (letter, digit, underscore)

Пример-строка: 123456789

([0-9]{5,7})\w+
    ^ Matches the digits: 1234567

([0-9]{5,7})\w+
             ^ Matches the digits: 89

Чтобы сопоставить число от 5 до 7 цифр, используйте:

\b\d{5,7}\b

\b ....... matches at the beginning or end of a word.
\d{5,7}... matches a digit in the range of 0-9 between 5 and 7 times.
1
Andie2302 26 Янв 2015 в 18:51