Risposte:
\b(?:(T)|t)own(s?)\b → (?1:\u)village$2
(E deseleziona ignora caso nella finestra di dialogo)
\b = limite di parole(?:) = gruppo non acquisito(?1:\u) = se il gruppo acquisito 1 converte il carattere successivo in maiuscolowww.però)!
Sono sulla mia macchina di lavoro in questo momento, quindi nessun TextMate qui per me su cui testare, ma penso che questo potrebbe fare quello che vuoi:
Find: \b(T)?((?<!T)t)?(?<! )own(s)?\b
Replace: (?1:Village)(?2:village)$3
(Assicurati di deselezionare prima "Ignora caso".)
Spiegazione:
Il modello 'Trova' cerca le lettere ownprecedute da a To a t, quindi le cattura in $1e $2rispettivamente. L' (?<!T)interno della seconda cattura si assicura che non si ottengano entrambi allo stesso tempo (come Ttinsieme), per quanto improbabile sia probabilmente, e il (?<! )bit significa che ownnon può essere preceduto da uno spazio - questo dovrebbe impedirlo dall'abbinare la parola ownda sola. L'una \bo l'altra parte significa che dovrebbe corrispondere solo all'intera parola (altrimenti corrisponderà a cose come towniese chown). Infine, la (s)?parte acquisisce un finale s(se esiste) in $3.
Il modello di sostituzione utilizza inserimenti condizionali per determinare con cosa sostituire il testo. Nello pseudo-codice la stringa di sostituzione dice sostanzialmente:
if (the first capture [T] exists) { replace the text by the word Village }
if (the second capture [t] exists) { replace the text by the word village }
(E poi aggiunge $3, che sarà vuoto o conterrà un s)
È brutto, ma penso che probabilmente funzionerà per l'esempio che hai dato comunque.
\bown\bdove il primo \bnon è uno spazio.