#regex
#регулярное выражение
Вопрос:
Есть ли что-то в регулярном выражении для сопоставления (условно), только если оно существует?
например
строка может
question_1
или только
question
В случае первого, оно должно соответствовать целому числу в конце, но, как и в случае последнего, оно должно оставить его.
Комментарии:
1. Что означает «оставить это»? Вы хотите сопоставить любую строку независимо от того, есть ли символ подчеркивания и число в конце или нет?
2. Этот вопрос указывает на нулевое знание регулярных выражений. Даже не ноль. Null. ЭТО не учебное пособие. Когда вы публикуете здесь, вы должны знать хотя бы основы аргумента, о котором вы спрашиваете.
3. Вы пытаетесь сказать, что если есть символ подчеркивания, за ним должно следовать число, иначе в конце не должно быть подчеркивания?
Ответ №1:
?
Это квантификатор 0-1 в регулярных выражениях. d?
означает 0 или 1 цифру. *
Это квантификатор с бесконечным числом 0. d*
означает 0 или более цифр. Это то, что вы хотите? (кроме
того, это 1 или более квантификатор, а не квантификатор означает ровно 1)
Чтобы уточнить, что вы спросили, я бы сказал
question(_d )?
question
за которым следует необязательный ( _
И 1 или более цифр)
Где скобки предназначены только для группировки подвыражения (это «математические» скобки)
Ответ №2:
Не совсем понимаю вопрос. Вы просто хотите извлечь число?
question_(d )
Ответ №3:
Если вы хотите извлечь число
question(?:_?)(d)?
Ответ №4:
в perl вы могли бы сделать что-то вроде:
my $string = 'question_1';
my $question_number = $string =~ /question_(d )/i;
now $question_number
будет содержать значение int, если оно совпадает, и будет undef
, если это не так
Ответ №5:
Если подчеркивание и число являются необязательными, попробуйте что-то вроде этого:
question(?:_d)?
Комментарии:
1. Он пытался сказать, что если есть символ подчеркивания, то должно присутствовать число. в противном случае, только «вопрос» без окончания _