正则表达式中空白与非空白字符边界的简写语法是什么?
匹配非空白字符与空白字符边界的正则方案
正则语法里没有像\b那样的简写,直接匹配非空白字符与空白字符(或字符串边界)之间的位置,但可以通过零宽断言实现完全相同的效果:
分场景实现
1. 匹配「非空白字符 → 空白/字符串结尾」的右侧边界
使用正向零宽断言:
(?=\s|$)
这个表达式会定位到一个位置,其右侧是空白字符(\s包含空格、制表符、换行等)或字符串结尾,左侧默认是非空白字符(符合需求场景)。
2. 匹配「空白/字符串开头 → 非空白字符」的左侧边界
使用反向零宽断言:
(?<=\s|^)
这个表达式会定位到一个位置,其左侧是空白字符或字符串开头,右侧是非空白字符。
3. 匹配任意符合条件的边界(左右都覆盖)
把两个断言结合,就能匹配所有「一侧是非空白、另一侧是空白/边界」的位置:
(?<=\s|^)|(?=\s|$)
示例说明
比如针对字符串 Hello world! Test:
(?=\s|$)会匹配Hello的o后、world!的!后、Test的t后这几个位置(?<=\s|^)会匹配Hello的H前、world的w前、Test的T前这几个位置- 组合后的表达式会覆盖所有符合要求的边界位置
内容的提问来源于stack exchange,提问作者user313032
相关产品推荐
相关产品推荐

