Вопрос 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.
Другие вопросы по тегам