add rename pattern tour guide

This commit is contained in:
Dreagonmon 2024-11-08 13:12:38 +08:00
parent cf7b8fcf68
commit 7196f9a501
11 changed files with 124 additions and 22 deletions

View File

@ -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

View File

@ -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)

View File

@ -1,17 +1,17 @@
# 重命名规则
# 重命名替换规则
## 基本语法
![重命名规则语法](../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 | ⟦空⟧ |
@ -31,8 +31,94 @@
* 字符串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)

View File

@ -0,0 +1,2 @@
# 点测数据处理

BIN
src/images/rename_01.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
src/images/rename_02.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

BIN
src/images/rename_03.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

BIN
src/images/rename_04.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

BIN
src/images/rename_05.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 228 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB