删除第 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'
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'