J'essaie de créer une petite application qui prend un modèle de texte de base avec des tableaux de mots spécialement étiquetés, analyse le contenu du modèle et génère un document texte généré aléatoirement.C# et regex pour les substitutions de mots avec des balises imbriquées
Essentiellement, ce que je suis en train de faire est de prendre ceci:
< {Bonjour | Salut | Howdy}> monde.
et la transformer en ceci:
Hello world. OR Hi world. OR Howdy world.
Jusqu'à présent, si bon. Googling m'a assez pour être en mesure d'extraire avec succès le texte interne entre les < {et}> dans un tableau, à partir de laquelle puis je choisis au hasard un mot pour remplacer le plein < {Hello | Hi | Howdy}>.
Le problème que je rencontre est l'analyse d'un ensemble de mots imbriqués enveloppés dans les mêmes balises.
Par exemple, si je commence par ceci:
< {Bonjour | Salut | Howdy}> monde. < {Comment est < {vie | ça va}> | Comment êtes-vous?}>
Je voudrais en faire ceci:
Hello world. How's life? OR Hello world. How's it going? OR Hello world. How are you?
et ainsi de suite ...
Quelqu'un pourrait-il suggérer un moyen de le faire assez simplement en utilisant C# et regex?
J'ai regardé http://www.vsj.co.uk/articles/display.asp?id=789 et http://www.m-8.dk/resources/RegEx-balancing-group.aspx, et pour être honnête, beaucoup de cela va bien au-dessus de ma tête, donc quelque chose de simple serait bien. ;-)
Merci.
Malheureusement, la grammaire décrite ci-dessus n'est pas régulière et donc vous ne pouvez pas utiliser regex. Vous avez besoin de la production S -> aBa, vous avez donc besoin d'un analyseur pour les langages sans contexte. –
J'ai essayé ceci et je l'ai mis au travail. Probablement de meilleures façons de le faire. L'astuce consistait à créer une classe qui utilise la chaîne et le motif d'entrée, trouver une correspondance et renvoyer le tableau de texte interne, analyser en utilisant une chaîne remplacer et la passer à nouveau dans la classe de manière récursive jusqu'à ce que plus de regex corresponde.Merci. –