提取单词和单词之前,并在正则表达式中的“_”之间插入
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)
细节
[^\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
原始字符串文字前缀!)。
以上是关于提取单词和单词之前,并在正则表达式中的“_”之间插入的主要内容,如果未能解决你的问题,请参考以下文章
正则表达式模式匹配第一个和最后一个标记之间的单词,第一个单词是常量