2016-12-14 2 views
1

Le texte est le suivant: "I like to watch.","\"I like to watch.\"" Expression régulière pour correspondre à tout entre « »

Je veux briser le texte dans «J'aime regarder » et "\" J'aime regarder. ""

utilisez "[\ w \ W] +?"

mais obtenir "J'aime regarder.", "\",

Quelle est la bonne expression?

+2

Pourquoi ne pas diviser par ','? –

+0

@MuratK .: Vous ne pouvez pas diviser avec un ',' ici. –

+0

le texte peut-être "J'aime regarder." \ N \ t "\" J'aime regarder. \ "" Ou toute chaîne entre "J'aime regarder." et "\" J'aime regarder. \ "" @ MuratK. – lsdoy

Répondre

2

Vous devez utiliser

"[^"\\]*(?:\\.[^"\\]*)*" 

Voir la regex demo.

Détails:

  • " - un guillemet
  • [^"\\]* - tout 0+ caractères autres que un double et un antislash
  • (?:\\.[^"\\]*)* - zéro ou plusieurs séquences de:
    • \\. - une barre oblique inverse et tout caractère autre qu'un saut de ligne char
    • [^"\\]* - tout 0+ caractères autres que un double et un antislash
  • " - un guillemet
+0

Le '.' peut être remplacé par' [\ s \ S] 'si un modificateur DOTALL n'est pas disponible dans votre saveur regex –

+0

wow, bon travail !!! – lsdoy