如果字符串被特定字符包围,如何用另一个字符串拆分字符串



例如,我有:

string = 'ST8*010A1~BHT*0019*0 BHT#5*20190114*'

只有当前面的字符是"~"并且后面的字符是非数字和非字母而不是空格时,我才需要用"BHT"拆分它。

我试过这个:

new_list = []
new_list = re.split(r'[~]BHT[^A-Za-z0-9 ]', contents)

问题是它给出了这个:

new_list = ['ST8*010A1', '0019*0 BHT#5*20190114*']

我需要:

new_list = ['ST8*010A1~', '0019*0 BHT#5*20190114*']

有没有办法重写代码,让它保留"~"?

谢谢。

您可以使用

new_list = re.split(r'(?<=~)BHT[^A-Za-z0-9 ]', contents)

请参阅生成['ST8*010A1~', '0019*0 BHT#5*20190114*']的 Python 演示。

这是一个正则表达式演示。(?<=~)模式是一个正向的回溯,它只检查字符串中是否存在~,但它不会被使用,因此保留在拆分块中。

最新更新