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

你是否有过类似以下的需求?
点击这里立刻解决: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次捕获(即第一个括号)
。。。 :。。。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值