8
votes

Utilisation de Regex pour extraire plusieurs numéros des chaînes

J'ai une chaîne avec deux numéros ou plus. Voici quelques exemples:

"(1920x1080)"
" 1920 by 1080"
"16 : 9"


1 commentaires

Veuillez décider de quelle langue vous avez besoin la réponse. Les objets Regex in .NET ne sont pas les mêmes que les Java.


4 Réponses :


1
votes
(\d+)\D+(\d+)
After that, customize this regex to match the flavour of the language you'll be using.

7 commentaires

\ d contiendra tous les chiffres , non seulement les chiffres romains, en fonction de la bibliothèque de regex et de la plate-forme.


.NET / C # 'S (et PCRE) Regex \ d correspondance [0-9]. Point final.


Non, ça ne le fait pas. Il correspondra au 0123456789 - Stackoverflow.com/a/6479605/1583


Si le caractère est défini comme un chiffre unicode, il sera assorti à .NET par \ d .


Pourriez-vous expliquer l'avantage de cela sur regex.matches (S, "[0-9] +");?


@ODED Votre premier commentaire m'a confondu jusqu'à ce que je réalisais que vous ne vouliez pas dire i , ii , ... vii n'est pas 0-9 arabe?


@Rawling - Oui, ils sont. Mal mis par moi-même. Signifiait les chiffres normalement utilisés dans l'ouest, par rapport à d'autres scripts.



12
votes

L'expression régulière de base serait la suivante: xxx pré>

Vous devrez utiliser la bibliothèque pour accéder à toutes les correspondances et obtenir leurs valeurs. P>

var matches = Regex.Matches(myString, "[0-9]+");

foreach(var march in matches)
{
   // match.Value will contain one of the matches
}


0 commentaires

1
votes

Vous pouvez utiliser xxx

sortie: xxx


0 commentaires

5
votes

Vous pouvez obtenir la chaîne en suivant

MatchCollection v = Regex.Matches(input, "[0-9]+");
foreach (Match s in v)
            {
                // output is s.Value
            }


3 commentaires

Regexoption.ignorecase n'est pas nécessaire. Les chiffres romains n'ont pas de cas supérieurs / minuscules.


Normalement, je pratique avec Regexoption.ignorecase. Désolé de mon erreur


Pas une erreur en tant que telle. Juste pas nécessaire dans ce cas.