Как сопоставить что угодно, кроме исключительно маленьких букв? - PullRequest
1 голос
/ 18 июня 2020

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

например,

Example # would match
example # would not match

Итак, простой ^[A-Za-z0-9 ]+$ не поможет.

Вот пример того, чего я хочу достичь, последняя папка содержит город, который всегда написан маленькими буквами, поэтому шаблон, который я хочу исключить: https://regex101.com/r/gP1evZ/2

Как этого можно достичь в регулярном выражении для python?

Ответы [ 3 ]

1 голос
/ 18 июня 2020

Если вы хотите разрешить совпадающие пробелы, и строка не должна содержать только символы нижнего регистра или разрешать пустую строку:

^(?![a-z ]+$)[A-Za-z0-9 ]*[A-Za-z0-9][A-Za-z0-9 ]*$

Regex demo

Или без просмотра вперед, сопоставьте хотя бы символ верхнего регистра или di git

^[A-Za-z0-9 ]*[A-Z0-9][A-Za-z0-9 ]*$

Regex demo

Edit

Для обновленных данных вы можете использовать отрицательный просмотр вперед (?!.*/[a-z]+/), чтобы утверждать, что то, что справа - это не только символы нижнего регистра между косыми чертами.

^/(hunde|kleinanzeigen)/(?!.*/[a-z]+/).*(prp_[a-z0-9_]+_\d+|cat_48_5030.*)\.html$

Regex demo

Или более широкое соответствие:

^/(hunde|kleinanzeigen)/(?!.*/[a-z]+/)\S+\.html$
1 голос
/ 18 июня 2020

Здесь вы можете использовать чередование:

^(?:[^a-z]+|(?=[^a-z]).+)$

Demo

Это регулярное выражение говорит, что соответствует:

^(?:            from the start of the string
    [^a-z]+     all non lowercase letters
    |           OR
    (?=[^a-z])  assert that at least one non lowercase letter character appears
    .+          then match one or more of any type of character
)$              end of the string
0 голосов
/ 18 июня 2020

Попробуйте ^ (?! [Az \ s] * $) это должно соответствовать строкам, которые не содержат только строчные символы и пробелы. При необходимости удалите \ s.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...