/ / Sostituzione di un singolo termine in uno schema regex: regex, sphinx, capturing-group

Sostituzione di un singolo termine in un modello regex: regex, sphinx, capturing-group

Sto usando regexp_filter in Sphinx per sostituire i termini

Nella maggior parte dei casi posso farlo ad es. gli errori di ortografia sono facili:

regexp_filter = Backround => Background

Anche lo scambio utilizzando l'acquisizione della notazione di gruppo:

regexp_filter = (Left)(Right) => 21

Tuttavia ho più problemi quando utilizzo una corrispondenza di pattern per trovare una determinata parola che voglio sostituire:

 regexp_filter = (PatternWord1|PatternWord2)W+(?:w+W+){1,6}?(SearchTerm)b => NewSearchTerm

Dove NewSearchTerm sarebbe il termine con cui voglio sostituire solo 2 (lasciando 1 e il resto del modello da solo). Così

Quindi se avessi un testo "Pizza and Taco Parlor" poi:

regexp_filter = (Pizza)W+(?:w+W+){1,6}?(Parlor)b => Store

Converti in "Pizza and Taco Store"

So che in questo caso il termine di ricerca è / 2 ma non lo èsicuro come convertire. So di poter aggiungere ad es. / 2s per renderlo plurale, ma come posso in effetti sostituirlo poiché è solo un singolo gruppo di acquisizione di diversi e voglio solo sostituire quel gruppo?

risposte:

0 per risposta № 1

Quindi, se capisco la domanda. Hai una stringa che corrisponde ai seguenti criteri:

  1. Inizia con PattenWord1 o PatternWord2
  2. Immediatamente seguito da una parola maiuscola
  3. Forse seguita da un'altra parola che sia compresa tra 1 e 6 caratteri: consiglia di utilizzare [A-z] anziché w + W +
  4. Seguito da "SearchTerm"

Usiamolo come base:

PatternWord1HelloSearchTerm

E vuoi solo sostituire SearchTerm dalla stringa.

Quindi hai bisogno di un altro gruppo di pattern attorno a tutto ciò che vuoi mantenere:

regexp_filter = ((PatternWord1|PatternWord2)W+(?:w+W+){1,6}?)(SearchTerm)b => 1World

Le corrispondenze del tuo gruppo di pattern sarebbero:

  1. PatternWord1Hello
  2. PatternWord1
  3. Termine di ricerca

Il tuo risultato sarebbe:

PatternWord1HelloWorld