我虽然已经适当地设置了表达式,但是拆分未按预期工作。

c = re.compile(r'(?<=^\d\.\d{1,2})\s+');
for header in ['1.1 Introduction', '1.42 Appendix']:
    print re.split(c, header)


预期结果:

['1.1', 'Introduction']
['1.42',  'Appendix']


我得到以下堆栈跟踪:


  追溯(最近一次通话):
  在第1行的文件“ foo.py”中
  c = re.compile(r'(?  编译中的文件“ C:\ Python27 \ lib \ re.py”,行190
  返回_compile(模式,标志)
  _compile中的文件“ C:\ Python27 \ lib \ re.py”,第242行
  引发错误,v#表达式无效
  sre_constants.error:向后看需要固定宽度的模式
  <<

最佳答案

python中的lookbehinds不能为可变宽度,因此您的lookbehind无效。

您可以使用捕获组作为解决方法:

c = re.compile(r'(^\d\.\d{1,2})\s+');
for header in ['1.1 Introduction', '1.42 Appendix']:
    print re.split(c, header)[1:] # Remove the first element because it's empty


输出:

['1.1', 'Introduction']
['1.42', 'Appendix']

关于python - Python正向后拆分可变宽度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22748123/

10-15 17:34