删除第 n 次出现之前的所有字符

Remove all characters before nth occurrence

Python 中的 SQL 是否有等同于 CHARINDEX/SUBSTRING 的词?

我想做的是删除第 3 个 ' 之前和第 4 个 ' 之后的字符,这意味着它只会给我留下数值。

a = "[counter('check', Id('23345675'))]"

预期的字符串输出:

a = "23345675"

听起来像是一些正则表达式解析的工作:

import re

test_string = "[counter('check', Id('23345675'))]"
pattern = re.compile(r"(?:.*?'){3}(.*?)'")
m = pattern.match(test_string )
print(m.group(1))

该模式基本上是说找到以 ' 结尾的任何内容 3 次,然后捕获该部分直到下一个 '

如果您想要第 3 和第 4 之间的所有内容 ',您可以拆分 ' 上的字符串并获得第 3 部分:

a = "[counter('check', Id('23345675'))]"
a.split("'")[3]  # "23345675"

请注意,您也可以拆分一定次数,例如,如果您想要第 3 次之后的所有内容 ':

a.split("'", 3)[-1]  # this gives: "23345675'))]"

对 SQL 不是很熟悉,但是您正在寻找这样的东西吗?

>>> a.split("'")[3]
'23345675'