Alcuni degli altri soccorritori hanno suggerito di usare un'espressione regolare che non dipende lookbehinds, ma 1 pensare un esempio di lavoro completo è necessaria per ottenere il punto attraverso. L'idea è di far corrispondere l'intera sequenza ("Ricerca" più la parola successiva) in modo normale, quindi utilizzare un gruppo di cattura per isolare la parte che ti interessa. Ad esempio,
String s = "Lorem ipsum dolor sit amet, consectetur " +
"adipiscing elit. Nunc eu tellus vel nunc pretium " +
"lacinia. Proin sed lorem. Cras sed ipsum. Nunc " +
"a libero quis risus sollicitudin imperdiet.";
Pattern p = Pattern.compile("ipsum\\W+(\\w+)");
Matcher m = p.matcher(s);
while (m.find())
{
System.out.println(m.group(1));
}
Si noti che questa stampa sia "intelligente" e "ora". Per fare questo con la versione lookbehind, si dovrebbe fare qualcosa di simile hacker:
Pattern p = Pattern.compile("(?<=ipsum\\W{1,2})(\\w+)");
Questo è Java, che richiede la lookbehind avere una lunghezza massima evidente. Alcuni sapori non hanno nemmeno più di tanto la flessibilità, e, naturalmente, alcuni non supportano lookbehinds affatto.
Tuttavia, il problema più grande di persone sembrano avere nei loro esempi non è con lookbehinds, ma con i confini di parola. Sia David Kemp e CK sembrano aspettarsi \b
che corrisponda al carattere di spazio che segue la 'M', ma non è così; corrisponde alla posizione (o di confine) tra la 'm' e lo spazio.
E 'un errore comune, uno 1've anche visto ripetuto in alcuni libri e tutorial, ma il costrutto parola confine, \b
non corrisponde alcun carattere. È un asserzione a lunghezza zero, come lookarounds e ancoranti (^
, $
, \z
, etc.), e ciò corrisponde è una posizione che è o preceduto da un carattere di parola e non seguita da uno, o seguito da un carattere di parola e non preceduta da uno.
battere anche me :) – annakata
I lookbehind tendono ad essere piuttosto limitati quando si tratta di utilizzare i caratteri jolly. – cletus
Qui potrebbe non essere necessario neanche guardare alle spalle. A seconda di cosa "voglio abbinare" nella domanda si riferisce a, vedere la soluzione di David Kemp. – user55400