*這里說的文本定位并非是定位某些字符,而是定位某些分界
環視(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)
新聞熱點
疑難解答