在网球比赛数据中,比分常常以一段连续的字符串形式给出,例如 "6-4,3-6,7-5",表示选手一和选手二在三盘中的得分。要正确提取两位选手的逐盘得分,我们需要把每盘的双方分数拆开并分别保存。

一、网球比分字符串的常见结构
大多数网球比分字符串使用逗号分隔每一盘,使用短横线分隔同一盘内两位选手的得分。基本模式如下:
- 每一盘格式为
选手一得分-选手二得分 - 多盘之间用逗号或空格隔开
- 得分通常为整数,但抢七可能带括号,本文以标准整数为例
二、使用正则表达式提取
通过正则 (d+)-(d+) 可以匹配每一盘的两个分数,再按出现顺序分配给两位选手即可。
Python 示例代码
import re
def parse_tennis_score(score_str):
# 用正则找出所有 数字-数字 的盘分
pattern = re.compile(r'(d+)-(d+)')
matches = pattern.findall(score_str)
player1_scores = []
player2_scores = []
for m in matches:
# m[0]为选手一该盘得分,m[1]为选手二该盘得分
player1_scores.append(int(m[0]))
player2_scores.append(int(m[1]))
return player1_scores, player2_scores
# 测试
text = "6-4,3-6,7-5"
p1, p2 = parse_tennis_score(text)
print("选手一逐盘得分:", p1)
print("选手二逐盘得分:", p2)
JavaScript 示例代码
function parseTennisScore(scoreStr) {
// 匹配每盘的 数字-数字
var reg = /(d+)-(d+)/g;
var p1 = [];
var p2 = [];
var match;
while ((match = reg.exec(scoreStr)) !== null) {
p1.push(parseInt(match[1], 10));
p2.push(parseInt(match[2], 10));
}
return { player1: p1, player2: p2 };
}
var str = "6-4,3-6,7-5";
var result = parseTennisScore(str);
console.log("选手一逐盘得分:", result.player1);
console.log("选手二逐盘得分:", result.player2);
三、处理更复杂的格式
如果字符串里混有空格或括号,如 "6-4 (7-3), 3-6",可以先去掉空格和括号内容,再按上述方法提取。核心思路是保持正则简单并预处理输入。
| 步骤 | 说明 |
|---|---|
| 清洗 | 移除空格与抢七括号 |
| 匹配 | 用正则取每盘两数 |
| 分配 | 按顺序存入两人数组 |
掌握这种方法后,无论盘数多少,都能准确得到两位选手的逐盘得分。