我还有一个关于正则表达式的问题。要求很简单:
给定一个长度为偶数的字符串。
12
1234
123456
12345678
abcdef
编写一个替换正则表达式来获取字符串的前半部分:
替换后:
1
12
123
1234
abc
我正在使用 pcre,它支持递归和控制动词。
我试过这样的东西,但它不起作用:(
s/^(?=(.))(?:((?1))(?1))+$/$2/mg
这是the test subject on regex101
有可能吗?我怎样才能做到这一点?
答案 0 :(得分:0)
我很确定这不是最优雅的解决方案,但它确实有效:
>>> 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'