8
votes

Regex ignorer de nouvelles lignes et faire correspondre une grande chaîne?

J'ai cette chaîne ici: xxx

Je veux faire correspondre à plusieurs lignes et faire correspondre les instructions SQL (toutes, il y aura beaucoup dans 1 grande chaîne) ... quelque chose comme ça, mais je ne reçois pas seulement une correspondance sur créer un index unique index555 sur xxx

note: j'essaie d'accomplir cela en Java si cela compte.


0 commentaires

5 Réponses :


4
votes

Découvrez les différents drapeaux pouvant être transmis à Pattern.comPILE . Je pense que dotall est celui dont vous avez besoin.


0 commentaires

3
votes

vous voudrez utiliser le Motif.dotall drapeau pour correspondre à travers les lignes.


0 commentaires

8
votes

check Ce

L'expression régulière. Correspond à n'importe quel caractère sauf un terminateur de ligne sauf si le drapeau DOTALL est spécifié

Vous devez donc faire quelque chose comme ça xxx


0 commentaires

21
votes

Vous devez utiliser des drapeaux DOTALL et MULTILINE lors de la compilation d'une expression régulière. Voici un exemple de code Java: xxx

La sortie sera la suivante: xxx


1 commentaires

vous avez seulement besoin de dotall



5
votes

Le drapeau dotall code> laisse le . code> correspondez à de nouvelles lignes neuves, mais si vous l'appliquez simplement à votre regex existant, vous finirez par correspondre à tout correspondant à partir du premier Créez code> au dernier ; code> en une fois. Si vous souhaitez faire correspondre les instructions individuellement, vous devrez faire plus. Une option consiste à utiliser un quantificateur non gourmand:

Pattern p = Pattern.compile("(?i)\\bCREATE\\b[^;]+;");


0 commentaires