正則表示式的先行斷言、後行斷言
實際開發中經常會遇到這樣的情況,需要在一組字串中取出指定的字元,例如:
取出如下一段程式碼裡和html標籤
<div><h2>title</h2><p>content</p></div>
理想的結果是:['div', 'h2', 'p']
經觀察目前字串的特點是:前置有:<、後置有:>,這個時候就能用到先行斷言和後行斷言,直接給出程式碼:
'<div><h2>title</h2><p>content</p></div>'.match(/(?<=\<)[a-z0-9]+(?=\>)/g)
由於 後行斷言 ES2018 才引入,所以實際應用中可能會需到問題,這個另外的話題,暫不提。
下面用另一個例子,再系統說一下先行斷言和後行斷言
有如下字串:
我愛你 我愛 愛 愛你
如果要取出愛字,要求這個愛字後面有你,這個時候就要這麼寫,這就是 先行斷言:
'我愛你 我愛 愛 愛你'.match(/愛(?=你)/g) // ["愛", "愛"]
如果要求愛字後面沒有你,那自然也有先行否定斷言:
'我愛你 我愛 愛 愛你'.match(/愛(?!你)/g) // ["愛", "愛"] ,因為匹配相同...
這個時候,如果要求愛字後面有你,前面還要有我,那就要用到後行斷言了,如下:
'我愛你 我愛 愛 愛你'.match(/(?<=我)愛(?=你)/g) // ["愛"]
最後,如果要求愛字前面沒有我,後面也沒有我,那就要用到先行否定斷言和後行否定斷言,如下:
'我愛你 我愛 愛 愛你'.match(/(?<!我)愛(?!你)/g) // ["愛"]
後最要說,正則表示式真是太靈活了... 加一個 軟老師傳送門
相關推薦
正則表示式的先行斷言、後行斷言
實際開發中經常會遇到這樣的情況,需要在一組字串中取出指定的字元,例如:取出如下一段程式碼裡和html標籤<div><h2>title</h2><p>content</p></div>理想的結果是:['di
正則表示式的先行斷言與後行斷言
正則表示式的先行斷言和後行斷言一共有4種形式: (?=pattern) 零寬正向先行斷言(zero-width positive lookahead assertion) (?!pattern) 零寬負向先行斷言(zero-width negative lookahe
Jmeter使用筆記(本文偏"介面測試工具")【GET/POST的HTTP請求、請求頭、響應斷言、正則表示式提取器、CSV讀取引數、跨執行緒組傳遞變數】
一、執行一個HTTP請求自從畢業從事軟體測試行業,大多數時間都在跟各種API打交道,使用過的介面測試工具也有許多,本文記錄下各工具的使用心得,以及重點介紹我在工作中是如何使用Jmeter做測試的,都是在windows作業系統下進行。最開始使用postman,該工具的優點是可以
JavaScript正則表示式(基礎、分組、懶惰匹配、反向引用和零寬斷言)
進階 懶惰匹配 分組 反向引用 零寬斷言 練習 基礎 常用字元總結: ^ 匹配行的開始位置 $ 匹配行的結束位置 \b 匹配單詞的開始或結束位置 . 匹配除換行符之外的任意字元 \w 匹配單詞字元(包括字母、數字、
先行斷言和後行斷言
script 字符串 pre ring ctu lac them 引擎 have 後行斷言 JavaScript 語言的正則表達式,只支持先行斷言(lookahead)和先行否定斷言(negative lookahead),不支持後行斷言(lookbehind)和後行否定斷
正則表示式驗證url、時間、ip
//驗證url function IsURL(str_url){ var strRegex = "^((https|http|ft
正則表示式 - IP地址、Mac地址、埠、經緯度、車牌號碼校驗
驗證地址 需要把表示式首尾斜槓去掉 IP地址驗證: /^(\d|[1-9]\d|1\d{2}|2[0-5][0-5])\.(\d|[1-9]\d|1\d{2}|2[0-5][0-5])\.(\d|[1-9]\d|1\d{2}|2[0-5][0-5])\.(\d
Java正則表示式實現港、澳、臺身份證驗證
最近由於業務的要求,需要進行港、澳、臺人員身份證驗證,現在直接上程式碼,經供參考學習,也為自己積累一些工具類: package com.qiu.validate; public class regexValidateCard { public String validateIdCard10(String id
常用的正則表示式大全(數字、字元、固定格式)
1.數字相關的正則表示式 數字:^[0-9]*$ n位定長的數字:^\d{n}$ m-n位之間的數字:^\d{m,n}$ 零和非零開頭的數字:^(0|[1-9][0-9]*)$ 非零開頭的最多帶兩位小數的數字:^([1-9][0-9]*)+(.[0-9]{1,2})
正則表示式驗證郵箱、金額
1.驗證郵箱正則表示式 var regEmail = /^[a-zA-Z0-9_-][email protected][a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/; 2.驗證金額正則表示式 var regMoney = /^([1-9
【python 正則表示式】python正則表示式提取郵箱、網址、手機號、ip地址
要從文字中提取電子郵件、url、手機號、ip地址等,我們可以使用殺手鐗正則表示式。下面是我封裝的函式,方便以後拿來直接用。 # encoding: utf-8 import re # 自定義獲取文
正則表示式-匹配中英文、字母和數字
在做專案的過程中,使用正則表示式來匹配一段文字中的特定種類字元,是比較常用的一種方式,下面是對常用的正則匹配做了一個歸納整理。匹配中文:[\u4e00-\u9fa5]英文字母:[a-zA-Z]數字:[0-9]匹配中文,英文字母和數字及_:^[\u4e00-\u9fa5_a-zA-Z0-9]+$同時判斷輸入長度
Java正則表示式替換移除空行和多餘的空格
這幾天重拾Java寫程式碼,需要操作文字檔案中的內容。 最終,要把內容裡的空行和多餘的連續空格移除,使用String裡的replace或者replaceAll,試了很多次都沒有成功。 最後發現需要使用正則表示式Regex。先把解決方案共享如下。 1. 移除多餘的連續空格,只
正則表示式及grep、sed、awk、cut、sort、uniq工具
1.正則表示式 (1)定義:規定一些特殊語法用來對字串進行模糊匹配; (2)特點: ①靈活性、邏輯性和功能性較強; ②可以迅速地用簡單的方式匹配字串; (3)使用事項:當正則表示式作為命令引數時,要用單引號括起來,
關於正則表示式的函式、符號含義
re.match #從開始位置開始匹配,如果開頭沒有則無 re.search #搜尋整個字串 re.findall #搜尋整個字串,返回一個list re中的flags :可選,表示匹配模式,比如忽略大小寫,多行模式等, 具體引數為: re.I 忽略大小寫 re.L 表示特殊字符集
jmeter獲取響應資料中引數值的常用方式(JSON提取器 、正則表示式提取器 、XPath提取器 、Bean Shell PostProcessor)
JSON提取器: XPath提取器: 返回資料格式是HTML的時候,選擇使用此種方式。 正則表示式提取器: 圖中Field to check勾選的是Response Headers,獲取的是請求頭裡的引數值。 B
正則表示式函式exec、match、search
正則表示式函式中的exec含義及用法: 匹配正則,返回一個數組 lastIndex是搜尋的字元下標起始位置(從第0個字元開始搜尋) <script> var str = 'you are a boy'; var reg = new RegExp(
[轉]常用正則表示式大全-----使用者名稱、密碼、郵箱、等資料格式的校驗
正則表示式收集,供自己查閱之用 轉自:http://www.jb51.net/article/72867.htm 一、校驗數字的表示式 1 數字:^[0-9]*$ 2 n位的數字:^\d{n}$ 3 至少n位的數字:^\d{n,}$ 4 m-n位的數字:^
常用的正則表示式-匹配中英文、字母和數字
在做專案的過程中,使用正則表示式來匹配一段文字中的特定種類字元,是比較常用的一種方式,下面是對常用的正則匹配做了一個歸納整理。 匹配中文:[\u4e00-\u9fa5] 英文字母:[a-zA-Z] 數字:[0-9] 匹配中文,英文字母和數字及_: ^[\u4e00
Java 正則表示式——貪婪匹配、惰性匹配、支配匹配
簡介 貪婪匹配 先看看整個字串是否存在匹配,如果未發現匹配,則去掉字串中的最後一個字元,再次嘗試匹配,如果還是未發現匹配再去掉最後一個字元,迴圈往復直到發現一個匹配或者字串不剩任何字串。 簡單量詞都是貪婪量詞。 惰性匹配 先看看字串的第一個字母