Le tre soluzioni che hai specificato coprono esigenze molto diverse.
L'analisi manuale (ricerca testo semplice) è la più flessibile e la più adattabile, tuttavia, molto rapidamente diventa un vero rompicapo poiché l'analisi richiesta è più complicata.
Regex sono una via di mezzo, e probabilmente la soluzione migliore qui. Sono potenti, ma flessibili in quanto puoi aggiungere a te stesso una maggiore logica dal codice che chiama la regex diversa. Lo svantaggio principale sarebbe la velocità qui.
Lex/Yacc è in realtà solo adattato a sintassi molto complicate e prevedibili e manca un sacco di flessibilità post-compilazione. Non è possibile modificare facilmente il parser a metà analisi, ma in realtà è possibile, ma è troppo pesante e sarebbe meglio usare l'espressione regolare.
So che questo è un cliché risposta, tutto si riduce davvero a ciò che i tuoi bisogni esatti sono, ma da quello che hai detto, io personalmente preferirei andare con un sacchetto di regex.
Come alternativa, come Vaibhav poionted fuori, se si dispone di diverse situazioni che possono sorgere e che si rileva CNA facilmente quale è in arrivo, si potrebbe fare un sistema di plugin che sceglie l'algoritmo giusto, e questi algoritmi potrebbero essere tutti molto diversi, uno con Lex/Yacc in casi a punta e l'altro con IndexOf e regex per casi più semplici.
Ho sentito che il Regex era responsabile per aver abbattuto il muro di Berlino. –
Dovrebbero davvero smettere di usare Nukes nei film di disastri. – Coincoin
Regex: la causa e la soluzione di tutti i problemi della vita. – MatthewKing