Domanda

Sono bloccato in un altro RegEx.

Input di esempio:

project description

Voglio scrivere RegEx. che se la parola " descrizione " viene trovato ed è preceduto dalla parola " progetto " quindi anteporre " descrizione progetto " con " < progetto > " ;.

output previsto:

<project>project description

Ho scritto seguendo Regex, n stringa di sostituzione ma non funziona: regex: ((?<=project) description) e stringa di sostituzione: <project_description>$0

Con l'attuale regex e la stringa di sostituzione sto ottenendo il seguente output:

project<project> description

Qualcuno può suggerire qualcosa?


**

  

DOMANDA MODIFICATA

** Ok, penso di non essere abbastanza chiaro nel dire alle persone quello che voglio esattamente.

Per rendere il problema generico e più chiaro, lo metterò in un altro modo.

Se " y " viene dopo " x " ;, quindi anteporre <tag> a xy.

È possibile farlo usando espressioni regolari?

È stato utile?

Soluzione

RISPOSTA MODIFICATA:

Questo non sembra appropriato per il lookbehind. Perché non sostituisci il tutto, in questo modo:

s/(project|other|word) description/<project>$1 description/

Questo anteporrà la parola <project> a qualsiasi project, other o word se è seguita da description.

Altri suggerimenti

Non capisco perché stai usando un lookbehind per questo - puoi semplicemente fare:

/project description/  ->  <project>$0

In PHP questo sarebbe

echo preg_replace('/project description/', '<project>$0', $str);

Estensione della regex di Greg in modo che corrisponda ai casi appena aggiunti:

/Details\sof\sproject|project(\sdescription|s\sundertaken|\(s\)\ssummary)/

//replace all the matches with

<project>$0

Successivamente puoi aggiungere nuovi casi a questa regex usando |.


MODIFICA: per rispondere If "y" comes after "x", then prepend <tag> to xy.

  

Sostituisci /x\s\y/ con <tag>$0

In questo modo <tag> verrà anteposto a tutte le occorrenze di x-space-y

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top