Python 正则表达式(regex)-如何按字符串中出现的前X位数拆分字符串?
我一直在努力寻找合适的正则表达式(Python)来满足我的需求: 我想根据6位数字的第一个位置分割一个字符串 比如说-Python 正则表达式(regex)-如何按字符串中出现的前X位数拆分字符串?,python,regex,Python,Regex,我一直在努力寻找合适的正则表达式(Python)来满足我的需求: 我想根据6位数字的第一个位置分割一个字符串 比如说- stringA = 'abcdf123456789' 理想情况下将被切割成- StringB='abcdf123456' StringC='789' 到目前为止,这是我提出的解决方案: x = re.split("(?=[0-9])", stringA) 然后在计算字符时循环计算结果 非常感谢您的帮助 您可以使用maxslit=1在6位数字上拆分,并捕
stringA = 'abcdf123456789'
理想情况下将被切割成-
StringB='abcdf123456'
StringC='789'
到目前为止,这是我提出的解决方案:
x = re.split("(?=[0-9])", stringA)
然后在计算字符时循环计算结果
非常感谢您的帮助 您可以使用
maxslit=1在6位数字上拆分,并捕获拆分的组,然后您可以轻松构建字符串:
import re
stringA = 'abcdf123456789'
split = re.split(r'(\d{6})', stringA, maxsplit=1)
# split is now ['abcdf', '123456', '789']
stringB = ''.join(split[:2])
stringC = split[2]
print(stringB)
print(stringC)
# abcdf123456
# 789
重新导入
stringA='abcdf123456789'
结果=重新拆分((?使用查找:
>>> stringA = 'abcdf123456789'
>>> re.split(r'(?<=\d{6})', stringA, maxsplit=1)
['abcdf123456', '789']
stringA='abcdf123456789'
>>>关于拆分(r’(?您可以将此代码用于两个捕获组:
>>重新导入
>>>stringA='abcdf123456789'
>>>[(stringB,stringC)]=re.findall(r'(.'?\d{6})(.''),stringA)
>>>打印(stringB)
abcdf123456
>>>打印(stringC)
789
您只需使用findall()
和组aka'()'
即可找到您需要的东西
import re
stringA = 'abcdf123456789'
pattern = r"([\D]*\d{6})(.*)"
result = re.findall(pattern, stringA)
print(result)
#output [('abcdf123456', '789')]
这是不可能通过正则表达式实现的,因为状态机太复杂了。在第一个捕获组的末尾总是有6个连续的数字吗?是的@anubhava,总是有6个连续的数字,但后面可能有另一个字符串。我有点困惑于这样的评论,即不可能通过正则表达式实现。虽然可能是更好的方法,我会说,对于所示的示例(?请始终对您的代码进行解释,为什么它比其他解决方案更好,以及它是如何工作的?
>>> stringA = 'abcdf123456789'
>>> re.split(r'(?<=\d{6})', stringA, maxsplit=1)
['abcdf123456', '789']
import re
stringA = 'abcdf123456789'
pattern = r"([\D]*\d{6})(.*)"
result = re.findall(pattern, stringA)
print(result)
#output [('abcdf123456', '789')]