L'expression suivante effectuera le travail en utilisant une assertion anticipée.
_(?>[^[\]]*(\[|$))
Le trait de soulignement représente un espace. Cette expression ne prend pas en charge les parenthèses imbriquées car les expressions régulières ne sont pas assez puissantes pour exprimer les structures correspondantes imbriquées. solution en utilisant un regard négatif affirmation avant
_ Match the space and
(?> assert that it is not inside brackets
[^[\]]* by matching all characters except brackets
( followed by either
\[ an opening bracket (a space inside brackets
will have a closing bracket at this position)
| or
$ or no more characters (end of line).
)
)
MISE À JOUR
Voici une autre (et plus belle).
_(?![^[\]]*])
Il affirme que le crochet suivant après un espace n'est pas un crochet de fermeture.
Besoin d'un parseur CSS? – kennytm
Sorte de. Je travaille sur un sélecteur CSS au convertisseur xpath. Le framework Zend est livré avec un sélecteur CSS vers le convertisseur xpath, mais il est buggé. – powerboy