parsings chaînes: l'extraction des mots et des phrases [JavaScript]
J'ai besoin de soutien phrases exactes (entre guillemets) dans un espace séparé d'une liste de termes.
Ainsi, le fractionnement de la respectifs par l'espace-personnage n'est pas plus suffisantes.
Exemple:
input : 'foo bar "lorem ipsum" baz'
output: ['foo', 'bar', 'lorem ipsum', 'baz']
Je me demande si cela pourrait être réalisé avec une seule RegEx, plutôt que de procéder à des complexes d'analyse ou split-et-rejoindre opérations.
Toute aide serait grandement appréciée!
OriginalL'auteur |
Vous devez vous connecter pour publier un commentaire.
... retourne un tableau que vous cherchez.
Remarque, cependant:
replace(/^"([^"]+)"$/,"$1")
sur les résultats.lorem
etipsum
, ils vont être dans le résultat. Vous pouvez résoudre ce problème en exécutantreplace(/\s+/," ")
sur les résultats."
aprèsipsum
(c'est à dire d'une manière incorrecte-phrase entre guillemets), vous vous retrouverez avec:['foo', 'bar', 'lorem', 'ipsum', 'baz']
Très bien, seul à ne pas trouver scape citer, comme ceci: ['foo', 'bar', 'lorem \' ipsum', 'baz']
OriginalL'auteur yoz
Essayez ceci:
Remarque il n'y a pas de supplément de guillemets autour de lorem ipsum
Bien qu'il suppose que l'entrée a la double guillemets au bon endroit:
Et de ne pas gérer échappé guillemets doubles (est-ce un problème?):
OriginalL'auteur Sam Hasler
que diriez-vous,
ensuite faire une passe sur la sortie de perdre les guillemets.
alternativement,
puis de faire un passe n sortie de perdre le vide de capture.
OriginalL'auteur davidnicol
Merci beaucoup pour les réponses rapides!
Voici un résumé des options, pour la postérité:
Pour mémoire, voici l'abomination que je devais venir avec:
OriginalL'auteur
le cadre citations incluses si
OriginalL'auteur shyam
Une simple expression régulière vais faire, mais laisser les guillemets. par exemple,
edit: battu par shyamsundar, désolé pour le double réponse
OriginalL'auteur A Nony Mouse
Un qui est facile à comprendre et à une solution générale. Fonctionne pour tous les séparateurs et les "rejoindre" les personnages. Prend également en charge 'a rejoint les mots de plus de deux mots.... ie listes comme
"hello my name is 'jon delaware smith fred' I have a 'long name'"
....Un peu comme la réponse par CA, mais un peu plus propre...
OriginalL'auteur
Si vous êtes juste vous demandez-vous comment créer les regex vous-même, vous pourriez vouloir vérifier Expresso (Expresso lien). C'est un excellent outil pour apprendre à construire des expressions régulières afin de connaître la syntaxe des moyens.
Lorsque vous avez créé votre propre expression, vous pouvez effectuer un
.match
.OriginalL'auteur
Ce pourrait être une réponse tardive, mais je suis intéressé à répondre à
http://regex101.com/r/dZ1vT6/72
Pur exemple en javascript
Sorties:
OriginalL'auteur
ES6 solution à l'appui:
Code:
De sortie:
OriginalL'auteur