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

标签 python regex string

使用 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 中执行此操作的最佳方法是什么?

最佳答案

>>> import re
>>> s = 'hello cat!'
>>> m = re.search('cat|dog|rat', s)
>>> s[m.start():]
'cat!'

当然,您需要考虑实际解决方案中没有匹配项的情况。

或者,更简洁:

>>> import re
>>> s = 'hello cat!'
>>> p = 'cat|dog|rat'
>>> re.sub('.*?(?=%s)' % p, '', s, 1)
'cat!'

对于多行,使用 re.DOTALL 标志。

关于python - 删除多行字符串中直到给定模式的所有字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2658101/

相关文章:

python - 检查一个字符串的字母在另一个字符串中是否按顺序排列

python - 在 pyqt5 上每次点击时使按钮标签发生变化

python - 我可以在 rcParams 中设置 spine 和 ticks 吗?

regex - 指定正则表达式组的结尾

c++ - 比较两个字符串的每个字符。新的和寻找输入

c# - 删除部分字符串的最佳方法是什么? (C#)

python - 带移动窗口的 Pandas 数据透视表

PHP 在字符串中搜索电子邮件地址

javascript - 正则表达式 - 收集强制前缀和可选组之间的字符

C - 使用 scanf 将字符串扫描到数组中