Expression régulière pour obtenir tous les caractères avant "-"
Comment puis-je obtenir la chaîne de caractères avant le caractère "-"
l'aide d'expressions régulières?
Par exemple, j'ai "text-1"
et je veux retourner "text"
.
source d'informationauteur Dan Dinu
Vous devez vous connecter pour publier un commentaire.
Donc, je vois beaucoup de possibilités pour atteindre cet objectif.
1) Regex Match tout jusqu'à la première "-"
^
match depuis le début de la chaîne.*?
correspondre à n'importe quel caractère (.
), zéro fois ou plus (*
), mais le moins possible (?
)(?=-)
jusqu'au prochain caractère est un "-" (c'est une vision positive de l'avenir)2) Regex Correspondent à rien de ce qui n'est pas un "-" depuis le début de la chaîne
[^-]*
correspond à tout caractère qui n'est pas un "-" zéro ou plusieurs fois2)1) Regex Correspondent à rien de ce qui n'est pas un "-" depuis le début de la chaîne jusqu'à ce qu'un "-"
3) Split sur "-"
4) sous-Chaîne jusqu'à la première "-"
text.IndexOf("-")
)Vous obtenez alors tous les résultats (tout de même) avec ce
Je préfère la première méthode.
Vous avez besoin de réfléchir également sur le comportement, quand il n'y a pas de tiret dans la chaîne. La quatrième méthode lève une exception dans ce cas, parce que
text.IndexOf("-")
sera-1
. Méthode 1 et 2.1 sera de retour rien et la méthode 2 et 3 sera de retour l'intégralité de la chaîne.Je ne pense pas que vous avez besoin de regex pour atteindre cet objectif. Je regarde le SubString méthode avec le indexOf méthode. Si vous avez besoin de plus d'aide, ajouter un commentaire montrant ce que vous avez essayé et je vais offrir plus d'aide.
Voici ma suggestion - c'est assez simple:
C'est quelque chose comme l'expression régulière dont vous avez besoin:
Les tests rapides en JavaScript:
Vous pouvez simplement utiliser un autre non-regex en fonction de la méthode. Quelqu'un a donné la suggestion de l'utilisation de sous-Chaîne, mais vous pouvez également utiliser Split:
Voir http://msdn.microsoft.com/en-US/library/ms228388%28v=VS.80%29.aspx pour un autre bon exemple.
Si vous souhaitez utiliser les RegEx .NET,