在声明正则表达式时,我需要一些帮助。我的输入如下:
我需要提取单词和单词之前,然后在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'
答案 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 }}原始字符串文字前缀!)。