Skip to content

Commit 640ae0a

Browse files
add: 匹配前置知识和关键点
1 parent a6d05c3 commit 640ae0a

File tree

4 files changed

+1260
-2196
lines changed

4 files changed

+1260
-2196
lines changed

‎README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
```
2626

2727
## 爬虫
28-
- npm run crawl
28+
- sudo npm run crawl
2929
- 此命令会先从github上拉取问题列表,将文件名解析成数组,然后根据问题名称循环拉取与之对应的markdown文件(此过程会先查找本地是否存在,如果存在则跳过)
3030
- 问题拉取完成后,根据markdown匹配正则,转化成所需的json文件
3131

‎scripts/generateleetcode.js

+38-52
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ const genertateLeetcodeToJson = () => {
1818

1919
let languageResloved = []
2020
let preKnowledge = []
21+
let keyPoints = []
2122
let markdown
2223

2324
try {
@@ -35,6 +36,7 @@ const genertateLeetcodeToJson = () => {
3536
}
3637

3738

39+
3840
/**
3941
* 以下替换是为了统一markdown语言标识
4042
*/
@@ -52,64 +54,48 @@ const genertateLeetcodeToJson = () => {
5254
})
5355

5456
})
57+
})
58+
markdown.replace(Utils.getSatelliteDataReg().pre, (noUseMatch, $1) => {
5559

56-
markdown.replace(Utils.getSatelliteDataReg().pre, (noUseMatch, $1) => {
60+
preKnowledge.push({
61+
text: $1,
62+
})
63+
})
5764

58-
preKnowledge.push({
59-
text: $1,
60-
})
61-
console.log('前置知识:', $1)
65+
markdown.replace(Utils.getSatelliteDataReg().keyPoints, (noUseMatch, $1) => {
66+
keyPoints = $1.replace(/\s/g, '').split('-').filter(s => (s && s !== '解析')).map(s => ({ text: s, link: null }))
6267

63-
})
68+
})
6469

70+
/**
71+
* TODO 这边解析字段不全
72+
*/
73+
74+
const [questionID, name,] = filename.split('.')
75+
76+
let oCustomStruct = {
77+
id: questionID,
78+
name,
79+
company: [
80+
],
81+
// todo
82+
tags: [
83+
],
84+
pre: preKnowledge,
85+
keyPoints,
86+
solution: `https://github.com/azl397985856/leetcode/blob/master/problems/${filename}`,
87+
code: languageResloved,
88+
}
89+
90+
91+
92+
Logger.success(`开始生成 "${filename}"`)
93+
94+
Utils.writeFileSync('spider/yield-db-json', `${filename.slice(0, -3)}.json`, JSON.stringify(oCustomStruct, null, 2))
95+
96+
Logger.success(`生成 "${filename}" 完毕`)
6597

66-
/**
67-
* TODO 这边解析字段不全
68-
*/
69-
70-
const [questionID, name,] = filename.split('.')
71-
72-
let oCustomStruct = {
73-
id: questionID,
74-
name,
75-
company: [
76-
{
77-
name: "阿里巴巴",
78-
}
79-
],
80-
// todo
81-
tags: [
82-
{
83-
id: "recursion",
84-
text: "递归",
85-
link: null,
86-
}
87-
],
88-
pre: [
89-
{
90-
text: "辅助栈",
91-
link: null,
92-
}
93-
],
94-
keyPoints: [
95-
{
96-
text: "辅助栈",
97-
link: null,
98-
},
99-
],
100-
solution: `https://github.com/azl397985856/leetcode/blob/master/problems/${filename}`,
101-
code: languageResloved,
102-
}
103-
104-
105-
106-
Logger.success(`开始生成 "${filename}"`)
107-
108-
Utils.writeFileSync('spider/yield-db-json', `${filename.slice(0, -3)}.json`, JSON.stringify(oCustomStruct, null, 2))
109-
110-
Logger.success(`生成 "${filename}" 完毕`)
11198

112-
})
11399

114100
})
115101

‎scripts/utils.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ const Utils = {
2121

2222
getSatelliteDataReg() {
2323
return {
24-
pre: /(?:)([\s\S]*)(?:##)/g
24+
pre: /(?<=## )([\s\S]*?)(?=##)/g,
25+
keyPoints: /(?<=## )([\s\S]*?)(?=##)/
2526
}
2627
},
2728

@@ -45,7 +46,7 @@ const Utils = {
4546
* @memberof Utils
4647
*/
4748
getKeyMatterReg() {
48-
return /(?:# )([.|[\r\n]]*?)(?:#)/g
49+
return /(?<=)([.|[\r\n]]*?)(?:#)/g
4950
},
5051

5152

0 commit comments

Comments
 (0)