sre_constants.error:正则表达式的意外结束 - 应该正常工作

时间:2015-04-28 10:52:14

标签: python regex runtime-error

所以我正在做一些测试,我需要一种将字符串分成两组的方法。 (例如C4251

我试图使用正则表达式模式来执行此操作('abcdef' => ['ab','cd','ef'])。每当我尝试编译此模式时,都会收到错误消息:

  

sre_constants.error:正则表达式意外结束

确切的代码行是:
[^]{2}

有人可以告诉我这里我做错了什么吗?我已经做了很多搜索,但很多问题都与错误的使用和/或反斜杠有关。

我认为这可能是因为字符串格式化,尽管Python文档没有提及任何问题。

2 个答案:

答案 0 :(得分:3)

使用

(.{2})

Dot将匹配任何角色。如果您想将换行符与点匹配,请不要忘记添加s修饰符。所以你的代码看起来像这样

p = re.compile('(?s)(.{2})')

此外,我不确定您为什么要使用正则表达式来完成任务。您可以使用以下代码段

执行此操作
In [5]: line = 'abcdef'

In [6]: n = 2

In [7]: [line[i:i+n] for i in xrange(0, len(line), n)]
Out[7]: ['ab', 'cd', 'ef']

答案 1 :(得分:0)

在JavaScript [^]中确实意味着"匹配任何字符" (尽管偶regex101 says"注意:避免使用此构造,请使用。或 [\ s \ S] 代替。")。但是,在Python中,[^]是一个无效的字符类(请参阅regex101上的this example)。

使用(?s)(.{2})

请参阅demo

(?s)内联选项可确保您还匹配换行符。