首页 > 解决方案 > 尝试使用特定的正则表达式拆分字符串

问题描述

我正在尝试使用 2 分隔符和正则表达式拆分字符串。我的字符串是例如

“测试 10 20 中间 30 - 40 毫米”。

我想分成[“test 10”,“20 middle 30”,“40 mm”]。因此,拆分删除 ' - ' 和 2 位数字之间的空格。我试着做

result = re.split(r'[\d+] [\d+]', s)
> ['test 1', '0 middle 30 - 40 mm']

result2 = re.split(r' - |{\d+} {\d+}', s)
> ['test 10 20 middle 30', '40 mm']

在 ['test 10', '20 middle 30', '40 mm'] 中是否有要拆分的 reg 表达式?

标签: regexsplitre

解决方案


您可以使用

(?<=\d)\s+(?:-\s+)?(?=\d)

请参阅正则表达式演示

细节

  • (?<=\d)- 一个数字必须立即出现在左边
  • \s+- 1+ 空格
  • (?:-\s+)?- 一个可选的 a 序列,-后跟 1+ 个空格
  • (?=\d)- 一个数字必须立即出现在右侧。

请参阅Python 演示

import re
text = "test 10 20 middle 30 - 40 mm"
print( re.split(r'(?<=\d)\s+(?:-\s+)?(?=\d)', text) )
# => ['test 10', '20 middle 30', '40 mm']

推荐阅读