2010-04-25 3 views
1

J'ai chaîne comme:regexp Posix pour trouver tout entre wordX et verbeux

FOO /some/%string-in.here BAR 

Je voudrais obtenir tout entre FOO et BAR, mais PAS y compris FOO[:space:] et PAS y compris [:space:]BAR

Toutes les idées seront appréciées. Vous ne pouvez pas simplement utiliser un groupe de capture?

+0

Utilisez un groupe de capture, puis obtenez la valeur de ce groupe au lieu de tout le texte correspondant? – Amber

+0

Oublié de mentionner, j'utilise que je ne suis pas tout à fait sûr si je peux utiliser lookaheads et lookbehinds assertions – Dan

Répondre

0

/FOO (.+?) BAR/ 
+0

POSIX ne supporte pas les quantificateurs paresseux –

0

Pour obtenir tout entre FOO et BAR, à l'exception des espaces après FOO ou avant BAR, utiliser regex pour ERE POSIX:

FOO[[:space:]]*(.*)[[:space:]]*BAR 

ou Posix BRE:

FOO[[:space:]]*\(.*\)[[:space:]]*BAR 

Étant donné que POSIX ne prend en charge que les quantificateurs gourmands, cette expression régulière capture tout ce qui se trouve entre FOO et la dernière occurrence de BAR, au cas où il y aurait plus d'un BAR.

Questions connexes