1
votes

Comment faire correspondre autre chose que des minuscules uniquement?

J'essaie de trouver une expression régulière qui autorise les petites lettres à côté d'autres caractères, mais pas s'il n'y a que des petites lettres.

par exemple

Example # would match
example # would not match

Donc un simple ^ [A-Za-z0-9] + $ ne fera pas l'affaire.

Voici un exemple de ce que je souhaite réaliser, le dernier dossier contient une ville qui est toujours en minuscules, donc un motif que je souhaite exclure: https://regex101.com/r/gP1evZ/2

Comment cela peut-il être réalisé en regex pour python?


7 commentaires

Que diriez-vous de ^ [A-Za-z0-9] * [A-Z0-9] [A-Za-z0-9] * $ . Ensuite, au moins un caractère doit être autre chose que a-z.


EXAMPLE est-il une correspondance? Plus précisément, est-ce que quelque chose qui n'a pas du tout de lettres minuscules correspond?


Hm ... approche intéressante, je dois admettre que je ne comprends pas tout à fait pourquoi cela devrait fonctionner. Les deux derniers crochets ne permettraient-ils pas qu'un seul caractère?


Essayez \ b (?! [Az] + \ b) \ w + regex101. com / r / liRU2H / 1


@TimBiegeleisen Oui, c'est le cas, la seule non correspondance est si la chaîne ne contient que de petits caractères.


Une chaîne vide correspondrait-elle ou non? Est-ce «oui, parce qu'il n'a pas de minuscules» ou «non, parce qu'il n'a pas de lettres non minuscules»?


Essayez ^ / (hunde | kleinanzeigen) / (?!. * / [Az] + /). * (Prp_ [a-z0-9 _] + _ \ d + | ‌ cat_48_5030. *) \. Html‌ $ regex101.com/r/kRvSS6/1


3 Réponses :


0
votes

Essayez ^ (?! [a-z \ s] * $) cela doit correspondre aux chaînes qui ne contiennent pas que des caractères minuscules et des espaces. Supprimez \ s si nécessaire.


1 commentaires

Merci, car il semble y avoir de nombreuses solutions possibles et l'intégration dans mon utilisation réelle en direct semble difficile, j'ai édité la question et ajouté un exemple.



1
votes

Si vous souhaitez autoriser les espaces correspondants et que la chaîne ne doit pas contenir uniquement des caractères minuscules ou autoriser une chaîne vide:

^/(hunde|kleinanzeigen)/(?!.*/[a-z]+/)\S+\.html$

Démo Regex

Ou sans le lookahead, correspond à au moins un caractère ou un chiffre majuscule

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


1 commentaires

Merci, car il semble y avoir de nombreuses solutions possibles et l'intégration dans mon utilisation réelle en direct semble difficile, j'ai édité la question et ajouté un exemple.



1
votes

Vous pouvez utiliser une alternative ici:

^(?:            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

Démo

Cette expression régulière dit de correspondre:

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


1 commentaires

Merci, car il semble y avoir de nombreuses solutions possibles et l'intégration dans mon utilisation réelle en direct semble difficile, j'ai édité la question et ajouté un exemple.