TCL - obtenir la liste de chaînes de caractères séparés par un espace blanc dans une autre chaîne à l'aide des expressions régulières
Comment écrire une expression régulière en TCL qui correspond à mot et d'espaces. Par exemple, j'ai
aaaa bbbb cccc
et je veux correspondre à "aaaaa ", "bbbb ", "cccc ".
Et aussi s'il vous plaît dites-moi quelle est la regex symbole pour les espaces et les non-blanc. Je ne peux pas le trouver n'importe où.
Grâce.
OriginalL'auteur Narek | 2011-02-21
Vous devez vous connecter pour publier un commentaire.
Ma pensée serait à la recherche juste pour les groupes de caractères de mot:
Vous pouvez trouver la description de la Tcl la syntaxe d'expression régulière sur le re_syntax page de man
\S
est non-blanc, plus qu'un simple "mot" caractères.Et une remarque, la valeur de retour de la regexp de commande est une liste de mots correspondants, et non la chaîne d'origine (bien qu'ils apparaissent de la même)
alors que mon esprit pense d' "séquentiel non-blanc" comme "word" pour les fins de cette question, c'est un argument valable. Et un bon point sur la valeur de retour. Il n'a pas eu lieu pour moi qu'il n'était pas évident qu'il est revenu 3 valeurs distinctes.
OriginalL'auteur RHSeeger
Je ne suis pas assez exactement ce que vous voulez, mais voici un exemple:
Qui produit la sortie suivante:
Dans le RE,
\S+
signifie une séquence non-vide de la non-espaces et\s+
signifie une séquence non-vide de l'espace. J'aurais pu utiliser\w+
(“mot” chars) et\W+
(“non-mot” chars), respectivement. Les parenthèses dans le RE surround groupes de capture; Tcl ne nécessite pas de REs pour correspondre à l'ensemble de la chaîne d'entrée.Pour une centaine de mots, je ne l'utiliserais RHSeeger de la solution. Pour quelques tend de milliers, j'avais commencer à se demander si je ne devrais pas être à l'aide d'une solution qui gère les choses un peu à un moment (et je peut aussi penser en termes de l'utilisation de plus en plus complexe de l'analyseur). Pour un mille, je ne suis pas sûr. 🙂
OK, merci quand même pour une bonne réponse!
OriginalL'auteur Donal Fellows
Regex symbole de l'espace est " ". Comme [a-z .] vous donne un espace, ainsi que la période et les minuscules.
l'espace et les espaces sont deux choses différentes. Un espace est juste que-un espace. "espace" désigne plusieurs personnages qui produisent l'espace entre les mots, généralement y compris les tabulations et les retours à la ligne.
OriginalL'auteur FlyingBlind