add rename pattern tour guide
13
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
|
||||
|
@ -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)
|
||||
|
@ -1,17 +1,17 @@
|
||||
# 重命名规则
|
||||
# 重命名替换规则
|
||||
|
||||
## 基本语法
|
||||
|
||||

|
||||

|
||||
|
||||
## 示例
|
||||
|
||||
假设正则表达式中的捕获组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)文档
|
||||
|
||||
首先,观察需要匹配的井次名称。
|
||||
|
||||

|
||||
|
||||
重命名导入界面如图所示,在窗口的左侧列表里,就是需要匹配的井次名称。
|
||||
列表中的一项,重命名前的名称为`DN2-4-DW10/VOLT`。
|
||||
|
||||
观察这个名称,可以将这个名称分为几部分:
|
||||
|
||||
* `DN2-4`是井名称
|
||||
* `DW`是上测或下测
|
||||
* `10`是不同测次
|
||||
* `VOLT`是数据曲线的名称
|
||||
|
||||
我们需要分别匹配这几个部分,作为捕获组里的内容,这样在重命名替换时就可以使用特定的部分了。
|
||||
|
||||
首先在匹配模式输入框里输入`.*`,英文字符点`.`表示匹配任何字符,英文字符星号`*`表示匹配任意多个数量。
|
||||
合在一起就是表示匹配任意数量的任意字符。点击预览,可以看到左边列表的所有曲线都被选中,说明匹配成功。
|
||||
在这个基础上,我们继续修改匹配模式,来匹配名称中的各个部分。
|
||||
|
||||
观察井名称这个部分,`DN2-4`由英文字母、数字和短横杠组成,此外井名称还可能有空格和下划线。
|
||||
为了匹配这一部分,我们在匹配模式前面加上`([\w-_ ]+)`,此时匹配模式变为`([\w-_ ]+).*`。
|
||||
|
||||
在这个部分,圆括号`()`表示一个捕获组,方括号`[]`表示一个字符集合,反斜杠加英文字母w`\w`表示匹配英文字母和数字。
|
||||
`[\w-_ ]`表示匹配英文字母和数字,加上短横杠、下划线和空格。加号`+`表示匹配一个或多个字符。
|
||||
所有这些合在一起,表示匹配多个由英文字母、数字、短横杠、下划线和空格组成的字符,并将结果作为一个捕获组。
|
||||
由于这是第一个,所以它的捕获组编号为1。
|
||||
|
||||
为了显示匹配的结果,在替换模式里面输入`$1`,表示使用第1个捕获组,点击预览,查看匹配到的捕获组1的结果。
|
||||
可以看到右边列表结果为`DN2-4-DW10`,这是由于正则表达式默认会尽可能多的匹配,在斜杠前面的都符合规则,于是都被匹配到了。
|
||||
|
||||

|
||||
|
||||
这里先不管匹配的结果是否匹配多了,能匹配到我们需要的字符就行。继续修改我们的匹配模式,接下来匹配`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`,匹配成功。
|
||||
|
||||

|
||||
|
||||
然后编写第三部分,即标识测次的部分。`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`来预览我们的结果。
|
||||
|
||||

|
||||
|
||||
可以看到结果为`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`。
|
||||
点击预览按钮,即可查看最终的结果。
|
||||
|
||||

|
||||
|
2
src/chapter_point_data_process.md
Normal file
@ -0,0 +1,2 @@
|
||||
# 点测数据处理
|
||||
|
BIN
src/images/rename_01.png
Normal file
After Width: | Height: | Size: 30 KiB |
BIN
src/images/rename_02.png
Normal file
After Width: | Height: | Size: 35 KiB |
BIN
src/images/rename_03.png
Normal file
After Width: | Height: | Size: 40 KiB |
BIN
src/images/rename_04.png
Normal file
After Width: | Height: | Size: 45 KiB |
BIN
src/images/rename_05.png
Normal file
After Width: | Height: | Size: 42 KiB |
Before Width: | Height: | Size: 228 KiB |
BIN
src/images/rename_pattern_rule_flow.png
Normal file
After Width: | Height: | Size: 78 KiB |