使用正则表达式删除精确字符串之前的所有内容

Removing everything before exact string with regex

我有这个字符串,我试图删除 P<RU 之前的所有内容,但没有任何反应,我收到了相同的字符串。基本上什么都没发生。

a = ("PECIMEN\n"
        "DWADWA\n"
        "P<RUSDATA<DATA<<<<\n"
        "00000000<ORUS7803118F213242803111025<<<64")
removed_text = re.sub(r'^.*?\nP<RU', '\nP<RU', a)

removed_text = re.sub(r'^.*?P<RU', 'P<RU', a)

这不一定需要正则表达式。假设 'P<RU' 出现一次 - 为什么不这样做:

    x = 'P<RU' + a.split('P<RU')[1]

你需要re.DOTALL标志,否则.不匹配换行符,所以它只会在字符串的第一行执行替换。

removed_text = re.sub(r'^.*?P<RU', 'P<RU', a, flags = re.DOTALL)