En utilisant Python avec littéraux-chaîne brute pour assurer aucune interprétation supplémentaire de séquences d'échappement est en cours, la variante suivante fonctionne:
import re
x = re.compile(r'^"((?:[^"\\]|\\.)*)"')
s = r'"quote\_with\\escaped\"characters" more"'
mo = x.match(s)
print mo.group()
émet "quote\_with\\escaped\"characters"
; Je crois que dans votre version (qui interrompt également la correspondance précocement si elle est substituée ici) la sous-expression "not a doublequote" ([^"]
) avale les barres obliques inverses que vous avez l'intention d'utiliser comme échappant aux caractères immédiatement suivants. Tout ce que je fais ici, c'est de veiller à ce que de telles contre-balises ne soient pas englouties de cette façon, et, comme je l'ai dit, cela semble fonctionner avec ce changement.
est-il pire question que « ce qui est WRO avec le regex? " - Aucune infraction CX. – Rob
Je sais, à droite: D Qu'auriez-vous intitulé? –
@Rob: cette question devrait-elle être formulée différemment? Ou est-ce que les questions sur les expressions régulières qui ne se comportent pas comme prévu ne sont pas appropriées pour Stack Overflow? –