Je veux faire correspondre "81" dans "630.81.11". Je suis coincé avec \.[0-9]*\.
qui comprend les points.Correspondance "81" dans "630.81.11" en utilisant regex
Répondre
Mise à jour: Après avoir vu ce problème que vous essayez de résoudre, je suggère de ne pas utiliser des expressions régulières.
Son utilisation dans une requête PostGreSQL. J'ai besoin de trier par les trois parties. Quelque chose comme:
ORDER BY
substring(plannr from '^[0-9]*')::integer,
substring(plannr from '\.[0-9][0-9]\.')::interger,
substring(plannr from '[0-9]*$')::integer
Au lieu d'utiliser une expression régulière, vous pouvez utiliser par exemple split_part
:
SELECT plannr
FROM table1
ORDER BY
split_part(plannr, '.', 1)::integer,
split_part(plannr, '.', 2)::integer,
split_part(plannr, '.', 3)::integer;
Résultat:
"2.2.3"
"2.10.3"
"2.10.20"
"10.1.4"
"630.81.11"
données de test:
CREATE TABLE table1 (plannr VARCHAR(100) NOT NULL);
INSERT INTO table1 (plannr) VALUES
('630.81.11'),
('2.2.3'),
('2.10.3'),
('2.10.20'),
('10.1.4');
réponse originale: Si votre moteur d'expression régulière comprend lookaheads de longueur fixe et assertions arrières vous pouvez le faire:
(?<=\.)[0-9]+(?=\.)
/^[0-9]+\.([0-9]+)\.[0-9]+$/
+1: En supposant PCRE, bien sûr. –
Vous pouvez joindre la partie intéressante dans un groupe, et extraire plus tard. Donc, quelque chose comme "\. ([0-9] *) \."; les parens dénotent un groupe.
Pattern pat = Pattern.compile("\\.(\\d+)\\.");
String str = "630.81.11";
Matcher matcher = pat.matcher(str);
while (matcher.find())
{
System.out.println(matcher.group(1));
}
Je l'ai testé en Java. La sortie est comme suit:
- 1. correspondance répétée groupe utilisant regex
- 2. Supprimer citation dans CORRESPONDANCE REGEX
- 3. Problème de correspondance Regex
- 4. Regex: Correspondance thingies dans le paragraphe
- 5. Correspondance des parenthèses avec Regex dans Flex
- 6. Python CORRESPONDANCE REGEX Newline
- 7. Python - regex sans correspondance
- 8. Python regex - correspondance conditionnelle?
- 9. Motif de correspondance et Regex en Perl
- 10. Regex correspondance plage numérique
- 11. version du navigateur Regex correspondance
- 12. Comment continuer une correspondance dans Regex
- 13. une ligne de correspondance dans JS regex
- 14. Correspondance Regex dans ColdFusion OU condition
- 15. Correspondance Regex dans le script shell
- 16. Regex et correspondance de date
- 17. en utilisant regex dans vb?
- 18. Correspondance et renvoyer la valeur en utilisant le caractère générique avec regex dans Ruby
- 19. Connexion Novell Error 81
- 20. RegEx: correspondance la plus petite possible ou non correspondance
- 21. regex excluent correspondance de la capture
- 22. .NET Regex prend-il en charge la correspondance globale?
- 23. Correspondance des arguments AS3 avec Ruby RegEx
- 24. Éléments assortis utilisant regex en Perl
- 25. Comment faire une recherche de regex "correspondance minimale" en C#?
- 26. Isoler le champ SQL en utilisant regex
- 27. Correspondance de chaîne exacte en utilisant Lucene.Search
- 28. Séquence de correspondance RegEx de 5 caractères
- 29. Correspondance des tables MySQL en utilisant Perl
- 30. C# regex. Correspondance optionnelle après chaîne
Quelle langue utilisez-vous? Quel appel de fonction utilisez-vous? –
Son pour une utilisation dans une requête PostGreSQL. J'ai besoin de trier par les trois parties. Quelque chose comme: ORDER BY sous-chaîne (plannr à partir de '^ [0-9] *') :: entier, sous-chaîne (plannr de '\. [0-9] [0-9] \.') :: interger, substring (plannr à partir de '[0-9] * $') :: entier La partie du milieu est le problème - ne peut pas le transformer en entier avec les points. –