Espressioni regolari: Esiste un operatore AND?

Ovviamente, si può usare il | (pipe?) per rappresentare OR, ma c'è un modo per rappresentare anche AND?

In particolare, vorrei abbinare paragrafi di testo che contengono TUTTO di una certa frase, ma in nessun ordine particolare.

Usa un'espressione regolare che non consuma.

La notazione tipica (cioè Perl/Java) è:

(?=expr)

Questo significa "corrisponde a expr ma dopo continua a corrispondere al match-point originale."

Puoi fare tutte queste cose che vuoi, e questo sarà un "and." Esempio:

(?=match this expression)(?=match this too)(?=oh, and this)

Puoi anche aggiungere gruppi di cattura all'interno delle espressioni che non consumano, se hai bisogno di salvare alcuni dei dati in esse contenuti.

Commentari (14)

Non è possibile nel tuo caso fare l'AND su più risultati corrispondenti? in pseudocodice

regexp_match(pattern1, data) && regexp_match(pattern2, data) && ...
Commentari (1)

L'ordine è sempre implicito nella struttura dell'espressione regolare. Per ottenere ciò che volete, dovrete far corrispondere la stringa di input più volte con diverse espressioni.

Quello che volete fare è non possibile con una singola regexp.

Commentari (2)