实现 一个满足你特殊癖好的 正则.md

xiaoxiao2021-02-28  72

你是否有过类似以下的需求? 点击这里立刻解决:https://dalerkd.github.io/Better_Regex.html

合并数据

将右边的内容匹配后排到左边,变为如下图的效果:

单纯的正则是没有合并功能的。

2给匹配的数据加序号

从左边变换为右边。

我们经常需要为数据增加序号,也就是数据往往和顺序相关。 单纯的正则没有提供第几次匹配这一信息,而该信息往往是重要的。

解决办法

我尝试去找相关资料,但没有什么语法似乎是原生提供这些功能的。 最后JavaScript的正则库终于给了一条容易的路径,我逼迫自己整理混乱的思绪完成这个小作品: Batter_Regex-Github

在线地址点击:https://dalerkd.github.io/Better_Regex.html

下载并打开这个html即刻开始体验。

&t : 第几次被匹配 &0 : 右侧数据池 &1 : 右侧数据池的第1次捕获(即第一个括号) 。。。 :。。。

用例:

打开网页,长这个样子:

我们用第一个问题做例子: 合并数据:

我们用&符号来作为右侧匹配内容的指带。 效果如上图。我们完成了这项合并工作。

示例-使用匹配顺序信息

&t提供了被匹配者出现的顺序信息,演示如下:

&符号可以按照你的需求自定义。

原理

利用JS的正则库在匹配时提供的处理时机,做这种扩展。 2017年5月6日

原先的文章

更好的正则

前两天查资料在博客遇到一个知识点: 回溯查找. 用来匹配11而不是12这种形式的数字.通过\1

Notepad++用的多了,发现正则在一些情况下不称手.

正则能这样更好: 1. 提供更多匹配数据的信息,比如它是第几次匹配次数. 2. 可以自定义替换函数 3. 数据池 从某块数据中按照某种规则获取数据,来作为替换内容用.

替换的核心是映射,匹配完毕,该是映射的作为主角的时候了. 正则提供了匹配者位置和长度的信息.替换程序利用这个位置和长度以及其他信息,对目标进行修改. 而正则也提供了无损插入删除的接口给替换程序用来操纵数据.

这样,我们就可以: - 1.提供更多匹配数据的信息.能够让我们将数据替换为:

例子:

abcd 1a2b3c4d 2.匹配后替换前提供计算能力,这个是很强大的. a 0x41 b 0x51 3.同样是服务第2项,比如将另一个文档的内容进行某种匹配,然后一一对应替换到这篇文档中的内容. 这里用了两次正则. JS,Python等编程语言中的正则库似乎能实现这种效果. 但是能否更简单一些呢? 其实JS已经很简单了,看一下能否对JS这部分进行一下封装。 (已经完成。)

仓库Batter_Regex-Github

点击这里立刻解决:https://dalerkd.github.io/Better_Regex.html

下载并打开这个html即刻开始体验。

语法参考:

&t : 第几次被匹配 &0 : 右侧数据池 &1 : 右侧数据池的第1次捕获(即第一个括号) 。。。 :。。。
转载请注明原文地址: https://www.6miu.com/read-52680.html

最新回复(0)