2017-10-05 2 views
0

J'ai besoin d'une expression régulière qui corresponde aux chaînes avec au moins une lettre A-Z et, éventuellement, un nombre et une combinaison de .-¤ (point, tiret et "soleil" (comment ça s'appelle en anglais?)).Recherche d'expressions régulières et caractères optionnels spécifiques

cordes seraient Matched

A 

AB 

A-. 

¤A 

mais pas

-. 

¤ 

car ils n'ont pas de lettres.

Mon premier essai était bien sûr ^[A-Z¤-.]*$ mais cela correspond aussi aux chaînes sans lettres.

[A-Z]+ matchs chaînes avec au moins une lettre

[¤.-]* les chaînes de caractères qui pourraient avoir ¤.- dans les

J'ai essayé de combiner ces deux dernières dans un certain nombre de façons, mais ne l'ai pas réussi à résoudre mon problème.

Existe-t-il un moyen de combiner ces deux dernières regexp quand je ne peux pas espérer un ordre particulier entre les lettres et les caractères ¤.- et en même temps exclure tous les autres caractères? Peut-être que des groupes ou des groupes qui ne capturent pas ont quelque chose à voir avec cela, mais je ne les comprends pas encore entièrement. PS J'applique cela avec la fonction DB2 REGEXP_LIKE.

Répondre

1

Vous pouvez utiliser

^[A-Z.¤-]*[A-Z][A-Z.¤-]*$ 

Détails

  • ^ - début de la chaîne
  • [A-Z.¤-]* - 0+ lettres majuscules, ., ¤ ou -
  • [A-Z] - un upperca se lettre
  • [A-Z.¤-]* - 0+ lettres majuscules, ., ¤ ou -
  • $ - fin de la chaîne.

Voir comment this regex matches sample strings.