regex - 尝试使用特定的正则表达式拆分字符串

标签 regex split python-re

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

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

我想分成[“test 10”,“20 middle 30”,“40 mm”]。因此,将“-”和两个数字之间的空格分开。 我尝试做

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'] ?

最佳答案

您可以使用

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

请参阅regex demo .

详细信息

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

请参阅Python demo :

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']

关于regex - 尝试使用特定的正则表达式拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61119392/

相关文章:

python - 返回后跟空格的特定字符或单词 - Regex Python

c# - 如何使用正则表达式在特定字符串/字符之后找到字符串

正则表达式转义 Groovy 中的特殊字符

java - 如何优化我的 Java 代码以使用 Java 7 开关?

linux - 在分隔符处拆分文件

javascript - 将字符串分成两部分,长度几乎相同

python - 正则表达式在python中的字符串中查找两个相同的字符串

java - 将引文替换为句子

c++ - 使用正则表达式检查输入有效性?

python - 为什么 re.Match 对象返回的结束索引高于预期?