Для данного регулярного выражения, [^a-z]*
в lex
, вопрос в том, будет ли он соответствовать любому слову, не содержащему строчной буквы, или это неправильная реализация? I.e., для этого конкретного сценария, должно ли данное регулярное выражение использоваться, или это является подходящим для сопоставления слова, которое не имеет строчных букв: [^a-z]+
?Regex in lex [^ a-z] *
Мое соображение состоит в том, что это не так, это должно быть +
вместо *
, так как отрицание диапазона, с 0 или более возможными случаями. кажется неправильным. Но трудно понять, почему это неправильно. Я попробовал несколько инструментов регулярных выражений в Интернете, а также его промах и промахи, некоторые из них показывают, что он работает, а некоторые показывают больше совпадений между символами.
Я бы сказал, что отрицание строчной строки и ее либо 0, либо более тех, которые будут соответствовать строке abc
, так как она (удовлетворяет сценарию, что у него ничего нет. можно сказать, что для любой строки. +
выглядит как более интуитивно понятный вариант, но в этом случае использовался *
, и я считаю его неправильной реализацией, но не могу найти никаких ресурсов для его резервного копирования, поскольку Google не играет хорошо с теми строки поиска.
Некоторые тестовые случаи, это является node.js:
/[^a-z]*$/.test('testTEST123') - True
/[^a-z]*$/.test('test') - True (this one should be false as per problem statement)
/[^a-z]+$/.test('testTEST123') - True
/[^a-z]+$/.test('test') - False (this one is correct, so there are no matches that dont satisfy the regex)
На regex101.com результаты аналогичны, но выделенная часть - это конец строки, хотя там нет символов.
Я не знаю, существует ли какая-то конкретная реализация регулярных выражений lex, но, как я описал, что-то не так с * использованием для несочетания диапазона.
В чем вопрос? '*' Означает 0 или более, '+' означает 1 или больше. '* 'будет соответствовать любой строке, в том числе пустым – Stefan
Я думаю, что вы чрезмерны. Сделайте regex' [az] 'и посмотрите, содержит ли строка какие-либо совпадения. – 4castle
@Stefan, чтобы перефразировать вопрос, делает ли предоставленное регулярное выражение только соответствие строка, которая не имеет строчных букв или для того, чтобы иметь такое поведение, должен использоваться символ + –