Comment puis-je supprimer tous les caractères de la chaîne dès le premier non-alpha personnage?
Cela aurait été beaucoup plus facile si ce n'est pour certaines situations.
Des données de l'échantillon:
KENP989SD
KENP913E
KENPX189R
KENP913
Quelle expression régulière puis-je utiliser pour supprimer tous les caractères de la chaîne en commençant à la première non-alpha personnage? Fondamentalement, je veux trouver le premier non-alpha caractère et hacher le tout hors tension après que, indépendamment du type char.
Après regex est appliqué, ces données doivent être:
KENP
KENP
KENPX
KENP
- Donc, fondamentalement, vous voulez à la première non-alpha. Pour "KENPX189R", après la "dernière alpha" serait ", car la "dernière alpha" (sur la ligne "R".
- oui ta raison... mauvais affiner le titre/description
Vous devez vous connecter pour publier un commentaire.
$s =~ s/[^a-zA-Z].*$//;
Littéralement, trouver le premier non-alpha char et hacher le tout à partir de lui.
Vous avez formulé la demande de 2 façons:
Alors que le résultat est le même, compte tenu de votre échantillon de chaînes, j'ai trouvé qu'il paye pour être plus prudent avec les regexes. Donc, je voudrais prendre le premier point ci-dessus que le réel exigence, et de l'écrire comme:
L'avantage dans mon esprit, c'est que des chaînes de caractères (comme "7KENP989SD") devrait entraîner une chaîne nulle après la substitution, au lieu de quelque chose d'inattendu comme "7KENP". Bien sûr, peut-être que c'est ce que tu voulais...
... va travailler. Ce n'est pas nécessairement la meilleure façon de le faire, mais c'est un cas général remplacer.
Il ne fonctionne que si vous voulez juste de caractères alpha
s/\P{Alpha}.*//
fonctionne pour moi amende:Peut-être ceci:
Utilise-regarder derrière pour remplacer tout ce qui est après le départ alphas avec vide.
Ajouter un indicateur i pour la casse, si nécessaire:
REMARQUE: je pense Igor est plus efficace.
Ajouter le " je " drapeau de la casse correspond
Voici mon aller à elle.
/^([A-Za-z]).$/
MODIFIER j'aime Igor approche meilleure que la mienne ..
code:
Si vous n'avez pas besoin de modifier l'entrée de la ligne elle-même, j'utilise un peu plus:
La plupart de mes variables sont lexicals dans une grande majorité des cas, donc un peu plus de ne pas faire de mal et m'empêche de éventuellement déformer entrée. De Plus, il passe souillure.