Match gourmand dans une expression régulière de MS Word?


3

J'ai besoin de nettoyer certaines tables dans Word, où les points-virgules et le texte qui les suit sont redondants, par exemple

text1 ; text 2

où ci-dessus se trouve le contenu d'une cellule et j'ai besoin d' enlever le point-virgule et tout ce qui le suit jusqu'à la fin de la cellule ; Malheureusement, le texte 2 n'a pas de motif spécifique.

J'essaie de le faire avec la recherche et le remplacement intégrés de Word à l'aide de regex.

Comme la fin souhaitée de mon expression régulière est la fin de la cellule, je ne peux pas la faire correspondre. J'ai essayé plusieurs combinaisons de caractères, ;?* ;* ;?@mais tout s'arrête au texte de correspondance le plus court. Existe -t-il un moyen de la faire correspondre jusqu'à la fin? de cellule?


Oops. Je cherchais un mauvais lien.
DavidPostill

Ça ;?{1,}marche?
DavidPostill

oui, ça "marche", correspond ;et un caractère après
Máté Juhász

Alors quelque chose comme ;?{1,9999}devrait fonctionner? " {n,m}correspond de n à m occurrences du caractère ou de l'expression précédent"
DavidPostill

S'il vous plaît essayer;[ 0-9A-Za-z]*
DavidPostill

Réponses:


4

Cela semble fonctionner:

;[!¤]{1,}

J'ai utilisé le symbole monétaire générique ¤, vous pouvez utiliser tout autre symbole dont vous êtes sûr qu'il n'est pas inclus dans le texte après le point-virgule (peut-être que c'est un point-virgule lui-même).

Juste une remarque: laisser la deuxième borne vide entre accolades ne signifie pas une chaîne sans fin, j'ai découvert par un essai que l'étendue est limitée à 255 caractères.


Merci! ça marche vraiment! Le remplacement {1,}de @ou *fait un match paresseux, ainsi que le remplacement [!#]de ?. Donc je ne trouve aucune logique derrière, mais ça marche :)
Máté Juhász

0

J'ai besoin d'enlever le point-virgule et tout après

Utilisez l'expression régulière suivante:

;?{1,9999}^13
  • {n,m}correspond nà des moccurrences du caractère ou de l'expression précédent
  • ^13 correspond à une pause de paragraphe

Source Rechercher et remplacer du texte à l'aide d'expressions régulières (avancé)


Merci pour votre effort! Oui, cela fonctionne pour les paragraphes normaux, mais les cellules du tableau ne se terminent pas par une marque de paragraphe, donc ^13ne correspondent pas à la fin de la cellule
Máté Juhász

Cela fonctionne-t-il si vous supprimez le ^13ou continue-t-il à correspondre dans la cellule suivante?
DavidPostill

;?{x,9999}correspond uniquement au point-virgule et aux xcaractères suivants
Máté Juhász

Essayez d'utiliser un nombre plus petit que 9999peut ;?{x,99}- être ou quelque chose comme ça
DavidPostill

tout de même, {1,}correspond également à un seul personnage
Máté Juhász

0

Copiez votre table ailleurs convertissez-le en texte ( Layout / Convert to text ) et sélectionnez Paragraph delimiter.

Procéder en remplaçant ;*^13par ^9, après avoir Use wildcardsvérifié. Couper ce bloc de texte.

Sélectionnez tout le texte de la table d'origine et collez-le "texte uniquement".


Malheureusement, il existe également des mises en forme et des commentaires différents, cette solution ne les conserve pas.
Máté Juhász

Cette solution de contournement vise à préserver la mise en forme des tableaux, vous devez coller du texte sans sa mise en forme (vous devriez le voir comme une option lorsque vous cliquez avec le bouton droit de la souris, un survol vous montre un aperçu) et vous obtiendrez des tableaux originaux. Je ne sais pas pour les commentaires, désolé.
Samedi
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.