Python - 在第一次出现不允许的字符时拆分字符串

Python - Split string on first occurrence of non-allowable characters

我有一些 python 代码,我想在第一次出现不允许的字符时扫描和拆分字符串。

import re,string
mystring="my_id=abc-something_123&anything#;?lcdkahck;my_id%3Dkckdkkj_bcjc"
if "my_id=" in mystring:
    mystring = mystring[mystring.index("my_id=") + 6 : len(mystring)][0:100]
    mystring = re.split('[;&#]', mystring)[0]
    print(mystring)

这里发生了什么,我在 ;&# 出现的地方正确地得到了字符串,但是我的数据可以包含任何不可预测的字符 ;&#.

我试过的方法排除了这些字符

allowable_character = '-' + '_' + string.ascii_letters + string.digits
mystring = re.sub('[^%s]' % allowable_character, '', mystring)
print(mystring)

但是这只是过滤了包含不在 'allowable_character'.

中的字符的字符串

我想要实现的是将字符串拆分一次不在 'allowable_character' 和 return 中的字符。

所以我希望预期输出为 'abc-something_123'

在此感谢任何帮助

你可以在这里使用 re.findall:

mystring = "my_id=abc-something_123&anything#;?lcdkahck;my_id%3Dkckdkkj_bcjc"
match = re.findall(r'^my_id=([\w-]*).*$', mystring)[0]
print(match)

这会打印:

'abc-something_123'