diff --git a/book.toml b/book.toml index 6c6e969..247a3bb 100644 --- a/book.toml +++ b/book.toml @@ -4,3 +4,16 @@ language = "zh" multilingual = false src = "src" title = "测井解释软件 使用文档" + +[build] +build-dir = "book" # the directory where the output is placed +create-missing = true # whether or not to create missing pages +use-default-preprocessors = true # use the default preprocessors +extra-watch-dirs = ["src/images"] # directories to watch for triggering builds + +[output.html] +default-theme = "light" +preferred-dark-theme = "light" +smart-punctuation = true +mathjax-support = false +copy-fonts = true diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 684c5e5..98ef284 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -3,8 +3,9 @@ - [使用指南](./chapter_home.md) - [插件安装指南](./chapter_installation.md) - [预处理](./chapter_preprocess.md) +- [点测数据处理](./chapter_point_data_process.md) - [其它工具](./chapter_utils.md) - [附录](./appendix/index.md) * [正则表达式](./appendix/regexp.md) - * [重命名规则](./appendix/rename_pattern.md) + * [重命名替换规则](./appendix/rename_pattern.md) * [计算表达式参考手册](./appendix/exp4j.md) diff --git a/src/appendix/rename_pattern.md b/src/appendix/rename_pattern.md index 60473de..eea334b 100644 --- a/src/appendix/rename_pattern.md +++ b/src/appendix/rename_pattern.md @@ -1,28 +1,28 @@ -# 重命名规则 +# 重命名替换规则 ## 基本语法 -![重命名规则语法](../images/rename_pattern_rule.png) +![重命名规则语法](../images/rename_pattern_rule_flow.png) ## 示例 假设正则表达式中的捕获组1为apple -(例如,用正则表达式`\b(a\w+)\b`去匹配文本apple,第一个捕获组就是apple) +(例如,用正则表达式`\b(a\w+)\b`去匹配文本apple,第一个捕获组(即第一个括号)就是apple) -| 重命名规则 | 结果 | -|:----:|:----:| -| $$ | $ | -| $1 | apple | -| $2 | ⟦空⟧ | -| $1>U | APPLE | -| $1>L | apple | -| $1>F | Apple | +| 重命名规则 | 结果 | +|:---------------:|:----------:| +| $$ | $ | +| $1 | apple | +| $2 | ⟦空⟧ | +| $1>U | APPLE | +| $1>L | apple | +| $1>F | Apple | | $1{le>lication} |application | -| $1{A>b} | apple | -| $1>F{A>b} | bpple | -| $1{p>b}{a>p} | pbble | -| $1{a>p}{p>b} | bbble | +| $1{A>b} | apple | +| $1>F{A>b} | bpple | +| $1{p>b}{a>p} | pbble | +| $1{a>p}{p>b} | bbble | 假设有四条重命名的名称,其中每一条匹配到的字符串为: * 字符串1捕获组1: 100 @@ -30,9 +30,95 @@ * 字符串3捕获组1: 500 * 字符串4捕获组1: 1300 -| 字符串 | 重命名规则 | 结果 | -|:----:|:----:|:----:| -| 字符串1 | $>N | 1 | -| 字符串2 | $>N | 2 | -| 字符串2 | $>N | 2 | -| 字符串3 | $>N | 3 | +| 字符串 | 重命名规则 | 结果 | +|:------:|:--------:|:----:| +| 字符串1 | $1>N | 1 | +| 字符串2 | $1>N | 2 | +| 字符串2 | $1>N | 2 | +| 字符串3 | $1>N | 3 | + +## 编写匹配模式 + +匹配模式是一个正则表达式,详细的语法可以参考[正则表达式](regexp.md)文档 + +首先,观察需要匹配的井次名称。 + +![重命名导入界面](../images/rename_01.png) + +重命名导入界面如图所示,在窗口的左侧列表里,就是需要匹配的井次名称。 +列表中的一项,重命名前的名称为`DN2-4-DW10/VOLT`。 + +观察这个名称,可以将这个名称分为几部分: + +* `DN2-4`是井名称 +* `DW`是上测或下测 +* `10`是不同测次 +* `VOLT`是数据曲线的名称 + +我们需要分别匹配这几个部分,作为捕获组里的内容,这样在重命名替换时就可以使用特定的部分了。 + +首先在匹配模式输入框里输入`.*`,英文字符点`.`表示匹配任何字符,英文字符星号`*`表示匹配任意多个数量。 +合在一起就是表示匹配任意数量的任意字符。点击预览,可以看到左边列表的所有曲线都被选中,说明匹配成功。 +在这个基础上,我们继续修改匹配模式,来匹配名称中的各个部分。 + +观察井名称这个部分,`DN2-4`由英文字母、数字和短横杠组成,此外井名称还可能有空格和下划线。 +为了匹配这一部分,我们在匹配模式前面加上`([\w-_ ]+)`,此时匹配模式变为`([\w-_ ]+).*`。 + +在这个部分,圆括号`()`表示一个捕获组,方括号`[]`表示一个字符集合,反斜杠加英文字母w`\w`表示匹配英文字母和数字。 +`[\w-_ ]`表示匹配英文字母和数字,加上短横杠、下划线和空格。加号`+`表示匹配一个或多个字符。 +所有这些合在一起,表示匹配多个由英文字母、数字、短横杠、下划线和空格组成的字符,并将结果作为一个捕获组。 +由于这是第一个,所以它的捕获组编号为1。 + +为了显示匹配的结果,在替换模式里面输入`$1`,表示使用第1个捕获组,点击预览,查看匹配到的捕获组1的结果。 +可以看到右边列表结果为`DN2-4-DW10`,这是由于正则表达式默认会尽可能多的匹配,在斜杠前面的都符合规则,于是都被匹配到了。 + +![重命名导入预览捕获组1](../images/rename_02.png) + +这里先不管匹配的结果是否匹配多了,能匹配到我们需要的字符就行。继续修改我们的匹配模式,接下来匹配`DW`,即上测或下测的标识。 +由于都是大写字母,且数量为2到4个字符,我们可以将匹配模式写成`([A-Za-z]{2,4})`。 +在这里面,`[A-Zz-a]`表示匹配A-Z和a-z即所有的大小写字母,`{2,4}`表示匹配2到4次,即2到4个字符。 + +然后将这一部分加入我们的匹配模式,得到`([\w-_ ]+)-([A-Za-z]{2,4}).*`,即使用短横线连接井名称和上测下测。 +同时修改替换模式为`$1 $2`来预览我们的结果。可以看到结果为`DN2-4 DW`,匹配成功。 + +![重命名导入预览捕获组2](../images/rename_03.png) + +然后编写第三部分,即标识测次的部分。`10`是一个数字,根据经验,这个数字应该在1到4位数之间。 +因此,这个部分的匹配模式可以写为`(\d{1,4})`,其中反斜杠加英文字母d`\d`表示匹配数字。 +合并之后的匹配模式为`([\w-_ ]+)-([A-Za-z]{2,4})(\d{1,4}).*`,这个部分和上测下测部分之间没有任何分隔字符。 + +同时修改替换模式为`$1 $2 $3`来预览我们的结果。可以看到结果为`DN2-4 DW 10`,匹配成功。 + +最后匹配曲线名称部分。`VOLT`曲线名称由字母组成,但是在某些不规范的井中,可能还有数字在里面。 +这里简单地使用`(\w+)`来匹配即可, 即匹配一个或多个字母或数字。 + +合并并删掉最后的`.*`,匹配模式为`([\w-_ ]+)-([A-Za-z]{2,4})(\d{1,4})\/(\w+)`。 +反斜杠表示转义,`\/`即标识斜杠字符本身,用来连接曲线名称部分与其它部分。 + +同时修改替换模式为`$1 $2 $3 $4`来预览我们的结果。 + +![重命名导入预览捕获组3](../images/rename_04.png) + +可以看到结果为`DN2-4 DW 10 VOLT`,匹配成功。 +将所有的部分都捕获到独立的捕获组中,此时就成功编写了一个匹配模式。 + +## 编写替换模式 + +重命名的最终目的是,将曲线导入成`VOLT_D1`这种形式,即包含了曲线名称,上测下测,以及测次的名称。 +利用前面匹配到的捕获组,我们可以替换出正确的曲线名。 + +首先是曲线名称部分,这里基本保持原样,可以转换一下大写,并替换一些不合理的名称。 +首先引用一下匹配模式里捕获了曲线名称的捕获组,在这个例子里是捕获组4,即`$4`。 +然后添加转大写字母的指令即大于号加大写英文字母U,替换规则变为`$4>U`,完成曲线名称这一部分。 + +然后是上测下测部分,要把`DW`替换为`D`,并把`UP`替换为`U`。这里先取对应的捕获组2,即`$2`。 +要做文本替换,可以使用文本替换指令。`{DW>D}`表示把`DW`替换为`D`,`{UP>U}`表示把`UP`替换为`U`。 +最后组合在一起得到`$2{DW>D}{UP>U}`,即对捕获组2先替换DW再替换UP,这就是上测下测部分的替换规则。 + +最后是测次的部分,需要把`10`、`20`、`30`等这样的数字变成序号,先取对应的捕获组3,即`$3`。 +然后用编号的指令,替换规则变为`$4>N`,就完成了测次部分的规则。 + +将上面三个部分用合适的字符连接起来,就得到了最终的替换规则`$4>U_$2{DW>D}{UP>U}$4>N`。 +点击预览按钮,即可查看最终的结果。 + +![重命名导入预览替换规则](../images/rename_05.png) diff --git a/src/chapter_point_data_process.md b/src/chapter_point_data_process.md new file mode 100644 index 0000000..8c0946e --- /dev/null +++ b/src/chapter_point_data_process.md @@ -0,0 +1,2 @@ +# 点测数据处理 + diff --git a/src/images/rename_01.png b/src/images/rename_01.png new file mode 100644 index 0000000..d206883 Binary files /dev/null and b/src/images/rename_01.png differ diff --git a/src/images/rename_02.png b/src/images/rename_02.png new file mode 100644 index 0000000..bf8ec44 Binary files /dev/null and b/src/images/rename_02.png differ diff --git a/src/images/rename_03.png b/src/images/rename_03.png new file mode 100644 index 0000000..12b0d8b Binary files /dev/null and b/src/images/rename_03.png differ diff --git a/src/images/rename_04.png b/src/images/rename_04.png new file mode 100644 index 0000000..8922b24 Binary files /dev/null and b/src/images/rename_04.png differ diff --git a/src/images/rename_05.png b/src/images/rename_05.png new file mode 100644 index 0000000..1c34394 Binary files /dev/null and b/src/images/rename_05.png differ diff --git a/src/images/rename_pattern_rule.png b/src/images/rename_pattern_rule.png deleted file mode 100644 index 9635501..0000000 Binary files a/src/images/rename_pattern_rule.png and /dev/null differ diff --git a/src/images/rename_pattern_rule_flow.png b/src/images/rename_pattern_rule_flow.png new file mode 100644 index 0000000..06b6053 Binary files /dev/null and b/src/images/rename_pattern_rule_flow.png differ