【问题标题】:RegEx question: standardization of medical terms正则表达式问题:医学术语的标准化
【发布时间】:2020-12-21 09:56:12
【问题描述】:

我需要将单词检测为“bot/hersen/levermetastase”并将它们转换为“botmetastase、hersenmetastase、levermetastase”。 但也可以将 'lever/botmetastase' 转换为 'levermetastase, botmetastase'。

所以我需要确保“单词/单词/单词转移”在数字上尽可能多变。

这是我的解决方案,但它不起作用。

过滤器

\b(\w)\s*[\/]\s*(\w)\s*(metastase)\b 

过滤器

$1metastase, $2metastase, $3metastase

【问题讨论】:

  • 你的问题不清楚。但关于你的正则表达式:\w 匹配单个单词字符,而不是一个单词(这是 \w+)。

标签: regex standardization


【解决方案1】:

你可以使用

/?(\w+)(?=(?:/\w+)+metastase\b)/?

替换为$1metastase (末尾有空格)。

如果斜线周围可以有空格,请使用

/?\s*(\w+)(?=(?:\s*/\s*\w+)+metastase\b)(?:\s*/)?
/?\h*(\w+)(?=(?:\h*/\h*\w+)+metastase\b)(?:\h*/)?

其中\h 匹配仅水平的空白字符,\s 将匹配任何空白字符。

请参阅regex demo #1regex demo #2

详情

  • /? - 一个可选的 / 字符
  • (\w+) - 第 1 组:一个或多个单词字符
  • (?=(?:/\w+)+metastase\b) - 必须跟在后面
    • (?:/\w+)+ - / 出现一次或多次,然后出现 1+ 个单词字符
    • metastase\b - 和 metastase 整个单词(\b 是单词边界)
  • /? - 一个可选的 / 字符。

【讨论】:

  • 谢谢!如果我用 "hersen/bot/levermetastase" 测试你的答案,我会得到 "hersenmetastase, botmetastase,levermetastase, metastase",但最后一个 "metastase" 不属于那里,实际上是太多的 "metastase"。你能再帮我一次吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-06
  • 2013-02-24
  • 2011-03-12
  • 1970-01-01
  • 2015-12-09
  • 1970-01-01
  • 2018-02-03
相关资源
最近更新 更多