提取单词和单词之前,并在正则表达式中的“_”之间插入

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了提取单词和单词之前,并在正则表达式中的“_”之间插入相关的知识,希望对你有一定的参考价值。

我需要一些关于声明正则表达式的帮助。我的输入如下:

我需要在word之前提取单词并在正则表达式中插入“_”:python输入

 Input
 s2 = 'Some other medical terms and stuff diagnosis of R45.2 was entered for  this patient. Where did Doctor Who go? Then xxx feea fdsfd'
 # my regex pattern
 re.sub(r"(?:[a-zA-Z'-]+[^a-zA-Z'-]+)0,1diagnosis", r"\1_", s2)
 Desired Output:
 s2 = 'Some other medical terms and stuff_diagnosis of R45.2 was entered      for this patient. Where did Doctor Who go? Then xxx feea fdsfd'
答案

您的正则表达式中没有定义捕获组,但使用\1占位符(替换反向引用)来引用它。

你想在-这个词之前替换除'diagnosis之外的1个特殊字符,因此你可以使用

re.sub(r"[^\w'-]+(?=diagnosis)", "_", s2)

this regex demo

细节

  • [^\w'-]+ - 除'_之外的任何非字char
  • (?=diagnosis) - 一个不消耗文本的正向前瞻(不添加到匹配值,因此re.sub不会删除这段文本)但只需要diagnosis文本立即出现在当前位置的右侧。

要么

re.sub(r"[^\w'-]+(diagnosis)", r"_\1", s2)

this regex demo。在这里,[^\w'-]+也匹配那些特殊的字符,但(diagnosis)是一个capturing group,其文本可以使用替换模式中的\1 placeholder来引用。

注意:如果你想确保diagnosis匹配为一个完整的单词,请在它周围使用\b\bdiagnosis\b(请注意r原始字符串文字前缀!)。

以上是关于提取单词和单词之前,并在正则表达式中的“_”之间插入的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式模式匹配第一个和最后一个标记之间的单词,第一个单词是常量

正则表达式提取路径中的单词

允许单词之间有空格的正则表达式

使用正则表达式获取用换行符分隔的单词之间的文本

如何使用JavaScript正则表达式提取字符串中的最后一个单词?

正则表达式删除特殊字符