Вопрос RegEx: стандартизация медицинских терминов
Мне нужно определить слова как "бот / херсен / леверметастаза" и преобразовать их в "ботметастаза, герсенметастаза, леверметастаза". Но также "рычаг / ботметастаза" в "рычажный метастаз, ботметастаз".
Поэтому мне нужно быть уверенным, что "слово / слово / метастаза слова" является как можно более разнообразным в числах.
Это мое решение, но оно не работает.
ФИЛЬТРИН:
\b(\w)\s*[\/]\s*(\w)\s*(metastase)\b
ФИЛЬТР:
$1metastase, $2metastase, $3metastase
1 ответ
Решение
Вы можете использовать
/?(\w+)(?=(?:/\w+)+metastase\b)/?
Заменить $1metastase
(с пробелом в конце).
Если вокруг косых черт могут быть пробелы, используйте
/?\s*(\w+)(?=(?:\s*/\s*\w+)+metastase\b)(?:\s*/)?
/?\h*(\w+)(?=(?:\h*/\h*\w+)+metastase\b)(?:\h*/)?
где \h
соответствует только горизонтальному символу с пробелами, и \s
будет соответствовать любому пробельному символу.
См. Демонстрацию регулярного выражения №1 и демонстрацию регулярного выражения №2.
Детали
/?
- необязательный/
char(\w+)
- Группа 1: один или несколько символов слова(?=(?:/\w+)+metastase\b)
- после этого следует(?:/\w+)+
- одно или несколько вхождений/
а затем 1+ словmetastase\b
- а такжеmetastase
целое слово (\b
это граница слова)
/?
- необязательный/
char.