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

时间:2019-03-05 09:09:57

标签: python regex

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

我需要提取单词和单词之前,然后在regex: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,1}diagnosis", 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 个答案:

答案 0 :(得分:2)

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

您想在-之前替换{+ {1}}和'以外的1+个特殊字符,因此您可以使用

diagnosis

请参见this regex demo

详细信息

  • re.sub(r"[^\w'-]+(?=diagnosis)", "_", s2) -除[^\w'-]+'之外的任何非单词char
  • _-不消耗文本的积极前瞻(不添加到匹配值,因此(?=diagnosis)不会删除此文本),而只需要re.sub文本以立即显示在当前位置的右侧。

diagnosis

请参见this regex demo。这里,re.sub(r"[^\w'-]+(diagnosis)", r"_\1", s2) 也匹配那些特殊字符,但是[^\w'-]+capturing group,其文本可以使用替换模式中的(diagnosis) placeholder来引用。 / p>

注意:如果要确保将\1整个词匹配,请在其周围使用diagnosis\b(注意{{1 }}原始字符串文字前缀!)。