Найти строки длиной 10 с регулярным выражением - PullRequest
2 голосов
/ 15 сентября 2009

Я хочу использовать регулярное выражение для поиска строк длиной ровно 10 символов и начинающихся с "7". Пожалуйста, может кто-нибудь сказать мне, как?

Ответы [ 11 ]

13 голосов
/ 15 сентября 2009

Это должно сработать:

^7.{9}$

7 соответствует символу «7». . соответствует любому персонажу. {9} указывает, что он соответствует предыдущему символу 9 раз.

Редактировать: ^ соответствует началу строки, а $ соответствует концу строки.

8 голосов
/ 15 сентября 2009

Что это за ответы с "7.{9}"? Они будут соответствовать таким вещам, как «7abc efghi», который явно две строки (на мой взгляд, исходя из тона вопроса). Они также будут соответствовать "7999999999999999999999999999" (что явно неверно в зависимости от вопроса), если вы не дадите понять, что используете функцию RE с неявными границами линии начала / конца.

Что вам, вероятно, понадобится, это белый список возможных символов, которые подстегивают строку, что-то вроде:

7[A-Za-z0-9]{9}

с (потенциально) границами слов с любой стороны, или (для более старых двигателей RE без этой функции) все эти:

[^A-Za-z0-9]7[A-Za-z0-9]{9}[^A-Za-z0-9]
^7[A-Za-z0-9]{9}[^A-Za-z0-9]
[^A-Za-z0-9]7[A-Za-z0-9]{9}$
^7[A-Za-z0-9]{9}$

Если есть больше символов, которые вы считаете частью "строки", просто добавьте их в разделы "[A-Za-z0-9]".

4 голосов
/ 15 сентября 2009

Этот шаблон должен работать: 7.{9}

'7', очевидно, будет соответствовать цифре '7'. «.» будет соответствовать любому символу, а «{9}» будет соответствовать предыдущему символу или группе (в данном случае «.») 9 раз.

Полезно потратить некоторое время на изучение регулярных выражений - вы можете взглянуть на эту статью или эту "шпаргалку" , чтобы помочь вам понять, как Работа. Такой инструмент, как RegexBuddy или Regular Expression Builder (мой личный фаворит - простой и мощный) также может быть очень полезным.

3 голосов
/ 15 сентября 2009

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

^7.{9}$
3 голосов
/ 15 сентября 2009

Чтобы найти строки (не слова) длиной ровно 10 символов:

^7\S{9}$
^ - begin of the string
7 - string must start with 7
\S{9} - 9 characters (use .{9} if you wish to allow any symbol in string including whitespaces)
$ - end of the string

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

3 голосов
/ 15 сентября 2009

Нечто подобное может быть:

(^|\n)(7\S{9})\s.*

Где (^ | \ n) - начало строки (либо bof, либо новая строка), (7 \ S {9}) - желаемая строка, \ S - любой непробельный символ, \ s любой пробел, и. * означает все, что мы не хотим.

2 голосов
/ 15 сентября 2009

Как и в случае с Паксом, если вы хотите найти строку, которая не соответствует ни одному пробелу, то есть:

// match this:
715kdgbp94

// not this
7 539 136a

тогда вы можете использовать это регулярное выражение:

7\S{9}

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

if (strlen($myString) == 10 && $myString[0] == "7")) {

или Javascript:

if (myString.length == 10 && substr(myString, 0, 1) == "7") {
2 голосов
/ 15 сентября 2009

"начиная с 7" - вы имеете в виду, начиная с цифры 7?

В любом случае, чтобы соответствовать строке длиной ровно 10 символов:

/[a-z0-9]{10}/i

Это будет соответствовать любой строке, состоящей из букв и цифр. Достаточно просто добавить дополнительные символы для соответствия, но так как вы не указали ...

Удачи

0 голосов
/ 15 сентября 2009
\b7\w{9}\b

Как в «непрерывной серии символов слова, которая начинается с '7' и стоит сама по себе».

(?<=^7|\s)7\w{9}(?=$|\s)

Как в «непрерывной серии символов слова, начинающейся с '7' и заключенной в пробел».

Последнее подразумевает, что прогнозирование и прогнозирование, очевидно, поддерживаются.

0 голосов
/ 15 сентября 2009

будет соответствовать любому числу, начинающемуся с 7, которое не длиннее 10 цифр.

\b7\d{0,9}\b
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...