2015-12-20 6 views
0

Я пытаюсь использовать regexp_filter для замены определенных суффиксов слов, поскольку я нахожу stem_en и lemmatizer для неожиданных результатов.using regexp_filters в индексе sphinx

Я попытался

regexp_filter = (.*)(graphical|graphic|graph) => \1graphy 

Но по какой-то причине поиск 'Биография' не соответствует 'биографического'

Я проверил в regex101, что мое регулярное выражение работает:

https://regex101.com/r/zM9jY5/1

по крайней мере, если найти рисунок и группы

и я проверил в сфинкса, что простой/прямая замена

regexp_filter = Biographical => Biography 

работ.

Так ясно, что шаблон регулярного выражения соответствует и, очевидно, работает замена regexp_filter. Как-то используя

(.*)(graphical|graphic|graph) => \1graphy 

не признает ни группы, ни образец?

ответ

0

Фактически, захват любого количества символов, отличных от новой строки (с .*) и захват их, чтобы просто восстановить их позже в замене, мало смысла.

Вы можете просто использовать

graphical|graphic|graph 

И заменить graphy.

Смотрите эту regex demo

Если вы DO NOT хочет, чтобы соответствовать целым словам graphic и , вы можете использовать

graphical|\bgraphic\b|\bgraph\b 
+0

На самом деле я использовал обратные ссылки успешно уже в другом regex_p. Я попробую сделать графический графический график, который не работает с wordforms, но вы правы. Я думаю, что regex_p должен справиться с этим. Мне просто нужно изменить его, чтобы он не изменял график слов или графику. – user3649739

+0

Вы имеете в виду, что НЕ хотите соответствовать целым словам 'graphic' и' graph'? Используйте «графический | \ bgraphic \ b | \ bgraph \ b'. –

+0

Чтобы быть ясным, backreference находится внутри самого регулярного выражения (т. Е. Обратно ссылается на совпадение в пределах одного выражения) - связанная страница связана с синтаксисом регулярного выражения, а не с синтаксисом замены. ** A \ 1 на стороне замены, отлично отлично **. Захват регулярных выражений, используемых для замены, поддерживается re2 и sphinx. (но я согласен на захват. * Не имеет смысла) – barryhunter

Смежные вопросы