2017-10-07 11 views
1

J'ai un grand fichier texte. J'ai un mot-clé spécifique [avec des espaces entre comme "ABC DEF G"]. Il se produit dans le fichier texte exactement deux fois ou ne se produit pas du tout. Je veux avoir un bloc-notes ++ recherche de sorte que tout le texte entre ces deux mots-clés (environ 300 à 1000 lignes) soit sélectionné automatiquement. Je vais ensuite faire un peu d'opération sur ce texte sélectionné via mon plugin.Alors ma première question est:[Sélection automatique du texte entre deux mots donnés dans un bloc-notes ++]

Cette auto-élection est-elle possible (via une expression régulière ou un plugin déjà construit).

Si oui, quelqu'un peut-il suggérer. A partir de maintenant, je suis en train de lire le fichier texte entier à rechercher, ce qui prend du temps et de la mémoire. Merci.

+0

Vous voulez dire comme [CE ] (https://ibb.co/dovFiw)? – Gurman

+0

oui exactement comme ça :) –

+0

Great. Je l'ai ajouté comme réponse. – Gurman

Répondre

0

Essayez cette Regex:

(?<=ABC DEF G)[\s\S]*(?=ABC DEF G)

Click for Demo

Explication:

  • (?<=ABC DEF G) - Positive Lookbehind pour trouver la position qui est précédé par le texte ABC DEF G
  • [\s\S]* - rencontres 0+ occurrences d'un caractère
  • (?=ABC DEF G)-Positive lookahead pour trouver la position immédiatement suivi par le texte ABC DEF G

Sortie:

enter image description here

+0

juste une chose si vous pouvez m'aider. Le texte est comme ABC DEF G *****. Puis du texte. Puis ABC DEF G ****** Je veux le texte de la ligne suivante après ***** et jusqu'à ce que j'atteigne A à nouveau dans la seconde. Plus loin si le texte n'est pas présent, qu'est-ce que cette expression fera.Premier problème je peux aussi travailler en faisant le balayage de caractères que je fais déjà dans mon plugin. Pouvez-vous dire ce qui se passe si ce texte n'est pas présent. –

+0

@NikhilSaxena Essayez ceci dans ce cas: '(? <= ABC DEF G) [^ \ n] * \ n \ K [\ s \ S] * (? = ABC DEF G)'. Voir [ICI] (https://regex101.com/r/8cOYW8/2). Vous sélectionnez à partir de la ligne suivante. – Gurman

+0

Il fonctionne correctement.Mais dans certains cas, il ne fonctionne pas.Quand il ne fonctionne pas, les fichiers texte sont grands autour de 4 lignes lac, Dans le cas de petits fichiers jusqu'à 2,5 lac, il fonctionne.Est-ce que la recherche peut échouer selon à la taille du fichier ou il peut être une autre raison? –