我試圖獲取下面提到的字符串正則表達式不是容貌相似,串
<a href="./products/" class="link">Products </a>
<a href="./servicesandsolutions/" class="link">Services & Solution </a>
正則表達式中使用開始和結束標記之間的內容合作對於第一個字符串正常工作,但不能與後來一次
我試圖獲取下面提到的字符串正則表達式不是容貌相似,串
<a href="./products/" class="link">Products </a>
<a href="./servicesandsolutions/" class="link">Services & Solution </a>
正則表達式中使用開始和結束標記之間的內容合作對於第一個字符串正常工作,但不能與後來一次
只是擺脫標籤。
var str = '<a href="./products/" class="link">Products </a>'
var str2 = '<a href="./servicesandsolutions/" class="link">Services & Solution </a>'
var RE_findOpenAndCloseTag = /^<[^>]+>|<\/[^>]>$/g;
str.replace(RE_findOpenAndCloseTag, '') == "Products ";
str2.replace(RE_findOpenAndCloseTag, '') == "Services & Solution ";
注意RE_findOpenAndCloseTag
假定標籤總是先從<
和不含>
除非它的關閉標記。 因此這將失敗。 「>「>這將失敗
但是,一個更簡單的方法是將標籤轉換爲一個節點,然後得到的innerHTML。
通常,你不想來解析HTML與正則表達式你的自我,解析器處於更好
假設你正在使用PCRE這裏是在表達一個隨機猜測你正在尋找:。
(?is)<([a-z]+)\b[^<>]*(?:>(.*?)</\1>|/>)
注意,這不會與嵌套標籤工作
根據正則表達式的味道 - 用前瞻和回顧後發的方法來獲取之間>和<即
(?<=>)[^>]*(?=<)
(?<=>)
只是比賽 - 展望爲>
(?=<)
- 向後看了<
[^>]*
- 與鏈接本身的文字相匹配
前瞻和回顧後是零寬度匹配,從而將只會得到你所需要的
+爲簡單起見,雖然後臺瀏覽器不支持許多流行的正則表達式工具(並且,Javascript是,可悲的是,其中之一)。但是再一次,OP使用哪個平臺是個謎。 – raina77ow
@LevLevitsky:我想你編輯向正則表達式中引入了幾個錯誤。什麼是所有的反斜槓? –
恢復爲原始正則表達式。 LevLevitsky,你爲什麼要改變這一點? –
一旦我刪除了反斜槓,我就有正規風暴抱怨效率低下。這可能是因爲它不能和第二個工作,因爲它更長 - 表達效率低下導致它翻倒到超時 –