請問這個「 (?<=<(\w+)>).*(?=<\/\1>) 」正則表達式是什么意思呢?



 (?<=<(\w+)>).*(?=<\/\1>)
----------------------------------------------------

正則表達式看懂的最好方法就是一步步分開解析:

1)以 '.*' 為分界,前面括號中的內容可以划分為 ‘?<=’ 和 ‘<(\w+)>’,其中‘<(\w+)>'表示匹配尖括號里面是字母、數字或下划線的內容,類似<span>,外面還要加個括號是要實現分組;而‘?<=’用到的是零寬斷言語法,表示的是斷定‘<(\w+)>’后面有或沒有內容,而且與內容的間隔寬度為零。

2)再看' .* '后面的部分,括號里面的內容可以分為 ‘?=’ 和 ‘<(\/\1>’,其中‘?=’用零寬斷言表示匹配‘<(\/\1>’前面的部分,而對於‘<(\/\1>’,‘\/’匹配‘/’符號,類似</span>,這里可能有些同學不太明白‘\1’是什么意思?這里用到的是捕獲分組的思想,上述提到的‘<(\w+)>’外面加個小括號就表示一個分組,對於正則表達式的分組結果,索引 0表示匹配的整個內容,而1表示的是第1個子分組,所以這里的'\1'指向的就是前面的第一個分組‘<(\w+)>’,\2表示重復第2個子項,\n表示重復第n個子項;

3).* 就比較簡單了,表示的是匹配 除了換行符意外的任意字符0次或多次。

綜上,改表達式匹配的是類似html標簽這種內容的,如<body>你好,正則!</body>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM