10、正则表达式在文本处理与HTML转换中的应用

正则表达式在文本处理与HTML转换中的应用

1. 正则表达式边界匹配与负向前瞻

在正则表达式的应用中,我们常常需要考虑边界条件以及避免匹配不需要的内容。在这个过程中,负向前瞻 !(?!\w) !(?!\d) 被广泛使用。可能有人会想到用 !\D 来替代 !(?!\d) ,但这是错误的。因为 !\D 表示“不是数字的某个字符”,它要求必须有一个非数字的字符存在。如果在被搜索文本中,数字后面没有任何内容, !\D 就无法匹配。

2. 无后瞻的数字逗号添加

后瞻在正则表达式中的支持不如前瞻广泛和常用,前瞻支持早于后瞻被引入正则表达式领域。在很多语言中,后瞻的支持还不完善。因此,我们来考虑如何在不使用后瞻的情况下解决数字添加逗号的问题。

例如,原本的正则表达式可能是:

$text =~ s/(\d)(?=(\d\d\d)+(?!\d))/$1,/g;

这里将原本包裹在前面数字 !\d 周围的正向后瞻替换为捕获括号,并在替换字符串中逗号前插入了对应的 $1

如果连前瞻也没有,我们可以用 !\b 替换 !(?!\d) ,那么下面这个表达式是否能实现数字添加逗号的功能呢?


                
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值