正则表达式匹配所有先前第二次出现的特定字符

时间:2019-12-03 12:00:47

标签: python regex

这是我的字符串70354871699YG000_7798419T0000_1

我想要字符串的第一部分,而忽略第二个_之后的所有内容,包括它本身。

深入研究之后,我发现该表达式具有匹配项,直到第一次出现_.+?(?=_)

但是如果我希望它第二次出现时该怎么办?

3 个答案:

答案 0 :(得分:1)

一种解决方案是将所有出现的'_'拼凑起来,并像前一样将前两个部分结合在一起

string = "70354871699YG000_7798419T0000_1"
splits = re.split(r"_",string)

"_".join(splits[:2])

答案 1 :(得分:1)

您可以使用否定字符[^_]类来匹配第一个下划线,该类首先匹配除_之外的任何字符,然后匹配_

使用积极的前瞻来声明第二个下划线:

^[^_]+_[^_]+(?=_)

Regex demo

答案 2 :(得分:0)

如果您想使用python做到这一点,我建议:

string = "70354871699YG000_7798419T0000_1"
string = string.split("_",2)
string = string[2]

不是最好的代码,但是嘿,它可以工作。