Wait the light to fall

使用 Raku 进行文本处理

焉知非鱼

文本处理 #

1)对于字符串:A_B_C_D_E.mp4,如何匹配倒数第二个“_”?

2)问题1: 每行行首都是下列形式数字章节号开头 1.1 1.1.1 1.1.2 1.2 1.2.1 1.2.2 1.3 以上章节号每个占据一行,章节号后面均有一个空格字符,然后是数量不定的英文或中文字符或数字,最后两个字符是tab空格和位数不限的数字。

章节号里有1个小数点的,行首加1个tab空格;2个小数点的,行首加2个tab空格,以此类推。

问题2: 每行行首大多数是以问题1的数字开头,但有部分是以英文或汉字开头,怎么吧以英文或汉字开始的行合并到上一行去?

问题1原始数据: 1.1 甲 1 1.1.1 yi 2 1.1.1.1 4 3 1.2 乙 14 1.2.1 yi 20 1.2.1.1 4 32

问题1期望数据: 1.1 甲 1 1.1.1 yi 2 1.1.1.1 4 3 1.2 乙 14 1.2.1 yi 20 1.2.1.1 4 32

问题2原始数据: 1.1 甲 1 1.1.1 yi 哈 2 1.1.1.1 4 3 1.2 乙 AV 4 1.2.1 yi 20 1.2.1.1 4 32

问题2期望数据: 1.1 甲 1 1.1.1 yi哈 2 1.1.1.1 4 3 1.2 乙AV 4 1.2.1 yi 20 1.2.1.1 4 32

3)根据某些字符对齐

比如根据r2对齐。

123123123, r2 123,r2

按照tab或者空格,像下面这样对齐。

123123123, r2 123, r2

4)匹配中文

.Str.say for ‘J00我是中文字’.match(/<:Hani>/,:g);

  1. 区分大小写替换

正则替换时能保留原来的大小写规则进行替换。

login -> login Login -> Reg LOGIN -> REG

6)文本内容的查找插入

一个文本文件,格式如下:

2012-10-01 一行文本内容 又一行文本内容 2012-10-02 又又一行文本内容

现在想把表示日期的比如2012-10-01放到“一行文本内容”的前面,形成如下: 2012-10-01,一行文本内容 2012-10-01,又一行文本内容 2012-10-02,又又一行文本内容

7)文本处理

需要处理从串口传过来的数据,传过来的字串长度是固定的,前导固定为‘’﹂+‘’,末尾固定为‘’B﹁‘’。具体例子: ﹂+00185621B﹁ 其中前6位数字是有效数字(本例为001856),接下来那一位数字是从右向左的小数位数(本例为2),余下的不要。最后的结果要处理成小数。 对于本例,前后的特殊字符和字母都不要,有效数字是001856,前面两个零没意义,就变为1856,又因为小数位数为2,最终变成18.56。