*这里说的文本定位并非是定位某些字符,而是定位某些分界
环视(lookaround)——不匹配字符串,仅仅匹配文本中特定位置 - 顺序环视: 肯定型顺序环视:如(?=/d),当前位置右侧是数字则匹配成功 否定型顺序环视:如(?!/d),当前位置右侧不是数字则匹配成功 - 拟序环视: 肯定型顺序环视:如(?<=/d),当前位置左侧是数字则匹配成功 否定型顺序环视:如(?
字符串1:I borned in 1980 and I have 1235436405754 dollars 字符串2:I borned in 1980s and I have 1235436405754 dollars 字符串3:I borned in 1980 and I have 1235436405754
正则一:(?<=/d)(?=(/d/d/d)+$) 字符串1定位结果:无法匹配 字符串2定位结果:无法匹配 字符串3定位结果:I borned in 1980 and I have 1,235,436,405,754
【分析】 1、(?<=/d)分界左边应该有数字 2、?=(/d/d/d)分界右边应该有三位数字 3、’+$’ 匹配多个(/d/d/d),$确保后边不存在其他字符 4、字符串中,如果数字字符右侧有非数字字符不可以匹配
正则2:(?<=/d)(?=(/d/d/d)+/b) 字符串1定位结果:I borned in 1,980 and I have 1,235,436,405,754 dollars 字符串2定位结果:I borned in 1980s and I have 1,235,436,405,754 dollars 字符串3定位结果:I borned in 1,980 and I have 1,235,436,405,754
【分析】 1、/b匹配单词的开始或结束,通常英文的单词是由空格或标点符号或换行为分隔的,但是/b并不代表这些单词分隔符中的任何一个,只代表一个位置。
正则3:(?<=/d)(?=(/d/d/d)+/s) 字符串1定位结果:I borned in 1,980 and I have 1,235,436,405,754 dollars 字符串2定位结果:I borned in 1980s and I have 1,235,436,405,754 dollars 字符串3定位结果:无法匹配(后边没有空格,无法对应/s)
新闻热点
疑难解答