Expression régulière supprimer vide et traits de caractère
Donné une chaîne de caractères comme String a="- = - - What is your name?";
Comment faire pour supprimer le leader de l'égalité, le tableau de bord, les caractères d'espace, pour obtenir le propre texte,
"Quel est votre nom?"
quelle est la langue que vous travaillez dans?
Toutes les réponses ici sont corrects, certains sont plus strictes que d'autres plus libérale en ce qu'ils retirer de la chaîne. Différentes langues ont également légèrement différentes implémentations/syntaxe pour leur regexes. Vous aurez donc d'être très précis en ce qui concerne la langue et les exigences de votre regex pour obtenir la "meilleure" réponse.
Toutes les réponses ici sont corrects, certains sont plus strictes que d'autres plus libérale en ce qu'ils retirer de la chaîne. Différentes langues ont également légèrement différentes implémentations/syntaxe pour leur regexes. Vous aurez donc d'être très précis en ce qui concerne la langue et les exigences de votre regex pour obtenir la "meilleure" réponse.
OriginalL'auteur Ke. | 2010-03-15
Vous devez vous connecter pour publier un commentaire.
Si vous voulez retirer le premier non-alphabets, vous pouvez correspondre:
et de le remplacer avec
''
(chaîne vide).Explication:
first ^
- Ancrage pour correspondre à ladébut.
[]
- classe charsecond ^
- négation dans un char de classe+
- L'un ou plusieurs des précédentes matchSorte que l'expression régulière correspond à d'une ou plusieurs non-alphabets qui sont au début de la chaîne.
Dans votre cas cas il va se débarrasser de tous les grands espaces, les principaux traits d'union et des principaux signe égal. En bref tout ce qui est avant le premier alphabet.
ne comprend pas les chiffres, mais [^a-zA-Z] peut inclure des chiffres. remplacement de + avec * n'est pas une bonne idée, disons d'entrée est "Salut", où je n'ai pas besoin de remplacer quoi que ce soit. Mais si j'utilise * je vais encore avoir un match (vide match) et je vais le remplacer par vide sting...ce qui n'entraîne aucun changement. À l'aide de + ne correspondent à rien de ce donc rien pour le remplacer...en le rendant plus efficace..performance. sage.
Je suppose que les chiffres de la partie dépend des exigences. Bonne explication sur l' * vs +, je n'avais pas envisagé cela.
Merci @codaddict, je ne veux pas de numérique. Votre explication est très claire.
OriginalL'auteur codaddict
OriginalL'auteur muruga
En Javascript, il pourrait le faire de cette
a.replace(/^[-=\s]*/mg, "")
Mon fond de pensée a été qu'il pourrait ne pas vouloir que cela fonctionne sur les lignes vides, mais votre hypothèse pourrait également être à droite.
OriginalL'auteur Robusto
Java:
Pourquoi? Si aucun de la délinquance personnages sont présents-oh, attendez, je vois @codaddict a déjà couverts.
Got it ........
OriginalL'auteur Martin Wickman
En supposant que Java essayez cette regex:
récupérer votre chaîne de capturé le groupe de 1!
\W*
correspond à toutes les précédentes non-caractères de mot(.*)
alors correspond à tous les caractères jusqu'à la fin en commençant par le premier caractère de mot^,$ sont les limites. vous pouvez même le faire sans $ dans ce cas.
Astuce essayez l'excellent Java regex tutoriel de référence.
OriginalL'auteur NomeN
En Python:
Pour enlever tout type d'espaces, l'utilisation
.lstrip("-= \t\r\n")
.lstrip
prend une liste de caractères, pas un regex.OriginalL'auteur Tim Pietzcker