2011-02-07 9 views
6

Sto cercando di estrarre,

ID=(?P<group>.+?);

da una stringa, l' 'ID =' è una costante, gruppo può essere qualsiasi cosa . La posizione della partita varierà nella stringa.

Nella maggior parte dei casi questo va bene, tuttavia, a volte la partita si troverà alla fine della stringa e il punto e virgola sarà mancante. In questo caso, come opzionalmente abbinare la fine della stringa? Ho provato quanto segue:

ID=(?P<group>.+?)[;$] 

ma questo non sembra funzionare, perché immagino $ non è un personaggio (è un ancoraggio?).

Questo viene eseguito in Python utilizzando il modulo re e tutto il normale comportamento come l'utilizzo delle stringhe non elaborate è stato considerato (credo!).

risposta

15

È possibile utilizzare (;|$) per abbinarlo. Oppure, se non si vuole una cattura, (?:;|$)

1

se l're.MUTILINE opzione non è abilitata ($ significa fine della stringa)

ID=(?P<group>)[^;]+ 

se l're.MUTILINE opzione è abilitata ($ significa fine della linea)

ID=(?P<group>)[^;\r\n]+ 

Cosa catturare, tra l'altro: ciò che è tra (P < gruppo>) e ';'? ?

+0

Un buon punto sul multilinea, sarà sempre una sola riga per questo codice, quindi non l'ho davvero guardato. La tua domanda nell'ultima riga mi ha confuso finché non ho realizzato che avevo il. +? al di fuori del gruppo che cattura, ora fissato e si spera che sia un po 'più chiaro. – mrmagooey

Problemi correlati