J'ai un fichier texte qui dénote des remarques avec un seul '
.
Certaines lignes ont deux guillemets mais j'ai besoin de tout obtenir de la première instance de a '
et du saut de ligne.
I AL01 ' A-LINE '091398 GDK 33394178
402922 0831850 ' '091398 GDK 33394179
I AL02 ' A-LINE '091398 GDK 33394180
400722 0833118 ' '091398 GDK 33394181
I A10A ' A-LINE 102 ' 53198 DJ 33394182
395335 0832203 ' ' 53198 DJ 33394183
I A10B ' A-LINE 102 ' 53198 DJ 3339418
L'expression régulière appropriée serait le 'char suivi d'un nombre quelconque de caractères [y compris zéro caractère] se terminant par un jeton de fin de chaîne / ligne:
Et si vous vouliez tout capturer après le 'char mais ne pas l'inclure dans la sortie, vous utiliseriez:
Cela dit essentiellement de me donner tous les caractères qui suivent le 'char jusqu'à la fin de la ligne.
Edit : Il a été noté que $ est implicite lors de l'utilisation de. * Et donc pas strictement requis, donc le modèle:
est techniquement correct, mais il est plus clair d'être précis et d'éviter toute confusion pour la maintenance ultérieure du code, d'où mon utilisation du $. Je pense qu'il est toujours préférable de déclarer un comportement explicite que de se fier à un comportement implicite dans des situations où la clarté pourrait être remise en question.
la source
En commençant par un guillemet simple (
'
), faites correspondre n'importe quel caractère (.
) zéro fois ou plus (*
) jusqu'à la fin de la ligne ($
).la source
Quand j'ai essayé '. * Dans Windows (Notepad ++), tout correspondrait après le premier' jusqu'à la fin de la dernière ligne.
Pour tout capturer jusqu'à la fin de cette ligne, j'ai tapé ce qui suit:
Cela ne capturerait que tout de «jusqu'à la fin de cette ligne.
la source
Dans votre exemple, je choisirais le modèle suivant:
utilisez des options multilignes et globales pour faire correspondre toutes les occurrences.
Pour inclure le saut de ligne dans la correspondance, vous pouvez utiliser:
Mais cela peut manquer la dernière ligne s'il n'a pas de saut de ligne.
Pour une seule ligne, si vous n'avez pas besoin de faire correspondre le saut de ligne, je préférerais utiliser:
la source
Cela capturera tout jusqu'à la référence arrière 1 - et tout après la référence arrière 2. Vous devrez peut-être échapper aux apostrophes en fonction de la langue (\ ')
Modification rapide: si la ligne n'a pas de '- backreference 1 devrait quand même attraper toute la ligne.
la source
https://regex101.com/r/Jjc2xR/1
Je suis sûr que celui-ci fonctionne, il capturera de hexa serial dans le texte multiliné mal structuré ci-dessous
Je suis un éternel débutant en regex mais je vais essayer d'expliquer celui-ci
(\ w * (Hex): w *): Rechercher le texte dans la ligne où la chaîne contient "Hex:"
(. *?) Ceci est le deuxième texte capturé et signifie tout après
(? = | $) crée une limite qui est l'espace entre = et le |
Donc avec le deuxième groupe, vous aurez la valeur
la source