我还有一个关于regex的问题。要求很简单:
给定一个长度为偶数的字符串。
12
1234
123456
12345678
abcdef
编写一个替换正则表达式来获得字符串的前半部分:
替换后:
1
12
123
1234
abc
我使用的是pcre,它支持递归和控制动词。
我试过这样的东西,但不起作用:(
s/^(?=(.))(?:((?1))(?1))+$/$2/mg
以下是regex101 的测试主题
有可能吗?我怎样才能做到这一点?
我很确定这不是最优雅的解决方案,但它确实有效:
>>> def half(string):
regex = re.compile(r"(.{%d})" % int(len(string)/2))
return regex.search(string).group(1)
>>> half("12")
'1'
>>> half("1234")
'12'
>>> half("123456")
'123'
>>> half("12345678")
'1234'
>>> half("abcdef")
'abc'