2017-10-15 11 views
2

J'ai quelque chose comme ça dans txtBloc-notes ++ regex. Trouver et remplacer avec wildcard, mais sans laisser d'espaces?

[[asdfg]] [[abcd|qwerty]] 

de suite, mais je le veux ressembler à ça

[[asdfg]] [[qwerty]] 

en utilisant des jokers ([[* \ |.) Lors d'une tentative de recherche, aboutit à trouver toute la ligne jusqu'au "|" Ne pas lui permettre d'avoir un espace intermédiaire devrait fonctionner, mais je ne sais pas comment faire.

Modifier 1

Il est d'une décharge de wikipedia, de sorte que la première partie est le mot dans sa forme de base et la seconde est la façon dont il se glisse dans la phrase. Quelque chose comme [[I]] [[be|was]] [[at]] [[the]] [[doctor]] Et je veux changer dans les phrases normales

[[I]] [[was]] [[at]] [[the]] [[doctor]] 

Edit 2

je trouve un peu d'une solution. Je viens de mettre chaque mot dans une nouvelle ligne, j'ai fait la première regex, puis j'ai supprimé les nouvelles lignes. Cela ne peu gâcher mon espace bien ...

+0

toujours trouver il faut mêmes caractères/réitérées comme 'c '| c ',' a '| a'? – RomanPerekhrest

+0

Non. C'est à partir d'une image de Wikipédia, donc la première partie est le mot dans sa forme de base et la seconde est comment il s'intègre dans la phrase. Quelque chose comme [[I]] [[be | was]] [[at]] [[le]] [[doctor]]. Et je veux le changer en phrases normales. – rrter123

+0

comment '[[I]] [[be | was]] [[at]] [[le]] [[médecin]]' devrait être remplacé? – RomanPerekhrest

Répondre

1

Essayez cette regex:

\[\[\w+\|(\w+)\]\] 

Remplacer par:

[[$1]] 

Assurez-vous que vous choisissez Regular expression en bas avant de cliquer sur Replace All dans Notepad ++ .

+0

Il dit qu'il ne peut pas trouver le texte. – rrter123

+0

Il devrait trouver quelque chose de similaire à ce '[[c '| c]]'. Avez-vous choisi "Regular expression" en bas avant de cliquer sur "Replace All"? – Ibrahim

+0

Je n'étais pas assez clair avec le code si ... Ce n'est pas vraiment un c '| c ce sont deux mots différents. Pardon. – rrter123

0

Vous pouvez tout faire en une seule fois comme si

\[{2}(?:(?!\]{2}).)+?\|([^\]]+) 

Cela doit être remplacé par

[[$1 

Voir a demo on regex101.com.


VENTILEES ce dit:

\[{2}    # match [[ 
(?:(?!\]{2}).)+? # do not overrun ]] 
\|    # | 
([^\]]+)   # capture anything not ] into group 1 

Ensuite, vous aurez seulement besoin de remplacer les supports ouverts et le contenu du groupe $1