尝试使用特定的正则表达式拆分字符串
Try to split a string with particular regex expression
我正在尝试使用 2 个分隔符和正则表达式拆分字符串。例如我的字符串是
"test 10 20 middle 30 - 40 mm".
我想分成 ["test 10",“20 中间 30”,“40 毫米”]。因此,splittin 会在 2 位数字之间删除 '-' 和 space。
我试过
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)
- 数字必须立即出现在右边。
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']
数据
k="test 10 20 middle 30 - 40 mm"
请尝试
result2 = re.split(r"(^[a-z]+\s\d+|\^d+\s[a-z]+|\d+)$",k)
result2
**^[a-z]**
- 匹配字符串开头的小写字母并贪婪地向左 +
后跟:
**`\s`** white space characters
**`\d`** digits greedily matched to the left
|
或用数字匹配字符串的开头 \d+
也贪婪地向左匹配并跟随通过:
`**\s**` white space characters
**`a-z`** lower case alphabets greedily matched to the left
|
或向左贪心匹配数字 \d+
结束字符串 $
输出
我正在尝试使用 2 个分隔符和正则表达式拆分字符串。例如我的字符串是
"test 10 20 middle 30 - 40 mm".
我想分成 ["test 10",“20 中间 30”,“40 毫米”]。因此,splittin 会在 2 位数字之间删除 '-' 和 space。 我试过
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)
- 数字必须立即出现在右边。
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']
数据
k="test 10 20 middle 30 - 40 mm"
请尝试
result2 = re.split(r"(^[a-z]+\s\d+|\^d+\s[a-z]+|\d+)$",k)
result2
**^[a-z]**
- 匹配字符串开头的小写字母并贪婪地向左 +
后跟:
**`\s`** white space characters
**`\d`** digits greedily matched to the left
|
或用数字匹配字符串的开头 \d+
也贪婪地向左匹配并跟随通过:
`**\s**` white space characters
**`a-z`** lower case alphabets greedily matched to the left
|
或向左贪心匹配数字 \d+
结束字符串 $
输出