加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 删除多行字符串中直到给定模式的所有字符

发布时间:2020-12-20 12:16:33 所属栏目:Python 来源:网络整理
导读:使用 Python我需要删除多行字符串中的所有字符,直到给定模式的第一次出现.在Perl中,这可以使用正则表达式来完成,例如: #remove all chars up to first occurrence of cat or dog or rat$pattern = 'cat|dog|rat' $pagetext =~ s/(.*?)($pattern)/$2/xms; 在
使用 Python我需要删除多行字符串中的所有字符,直到给定模式的第一次出现.在Perl中,这可以使用正则表达式来完成,例如:

#remove all chars up to first occurrence of cat or dog or rat
$pattern = 'cat|dog|rat' 
$pagetext =~ s/(.*?)($pattern)/$2/xms;

在Python中使用它的最佳方法是什么?

解决方法

您想要删除第一次出现模式之前的所有字符;例如,你给“猫|狗|老鼠”.

使用re实现此目的的代码:

re.sub("(?s).*?(cat|dog|rat)","1",input_text,1)

或者,如果您将再次使用此正则表达式:

rex= re.compile("(?s).*?(cat|dog|rat)")
result= rex.sub("1",1)

注意非贪心.*?初始(?s)允许在单词匹配之前匹配换行符.

例子:

>>> input_text= "I have a dog and a cat"
>>> re.sub(".*?(cat|dog|rat)",1)
'dog and a cat'

>>> re.sub("(?s).*?(cat|dog|rat)",1)
'I have no animals!'

>>> input_text= "This is irrational"
>>> re.sub("(?s).*?(cat|dog|rat)",1)
'rational'

如果您只想对cat,dog和rat这两个词进行转换,则必须将正则表达式更改为:

>>> re.sub(r"(?s).*?b(cat|dog|rat)b",1)
'This is irrational'

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读