Regex替换:获取字符串的一半



我还有一个关于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'

最新更新