所以我正在做一些测试,我需要一种将字符串分成两组的方法。 (例如C4251
)
我试图使用正则表达式模式来执行此操作('abcdef' => ['ab','cd','ef']
)。每当我尝试编译此模式时,都会收到错误消息:
sre_constants.error:正则表达式意外结束
确切的代码行是:
[^]{2}
有人可以告诉我这里我做错了什么吗?我已经做了很多搜索,但很多问题都与错误的使用和/或反斜杠有关。
我认为这可能是因为字符串格式化,尽管Python文档没有提及任何问题。
答案 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)
内联选项可确保您还匹配换行符。