正则表达式在文本处理与HTML转换中的应用
1. 正则表达式边界匹配与负向前瞻
在正则表达式的应用中,我们常常需要考虑边界条件以及避免匹配不需要的内容。在这个过程中,负向前瞻 !(?!\w) 或 !(?!\d) 被广泛使用。可能有人会想到用 !\D 来替代 !(?!\d) ,但这是错误的。因为 !\D 表示“不是数字的某个字符”,它要求必须有一个非数字的字符存在。如果在被搜索文本中,数字后面没有任何内容, !\D 就无法匹配。
2. 无后瞻的数字逗号添加
后瞻在正则表达式中的支持不如前瞻广泛和常用,前瞻支持早于后瞻被引入正则表达式领域。在很多语言中,后瞻的支持还不完善。因此,我们来考虑如何在不使用后瞻的情况下解决数字添加逗号的问题。
例如,原本的正则表达式可能是:
$text =~ s/(\d)(?=(\d\d\d)+(?!\d))/$1,/g;
这里将原本包裹在前面数字 !\d 周围的正向后瞻替换为捕获括号,并在替换字符串中逗号前插入了对应的 $1 。
如果连前瞻也没有,我们可以用 !\b 替换 !(?!\d) ,那么下面这个表达式是否能实现数字添加逗号的功能呢?
超级会员免费看
订阅专栏 解锁全文
1649

被折叠的 条评论
为什么被折叠?



