我有以下文本,我想要一個匹配每個檔案最后一頁的正則運算式:https : //regex101.com/r/DmVnK7/1
正確的正則運算式給出以下結果:
A_File1_Page1
**A_File1_Page2**
A_File2_Page1
A_File2_Page2
**A_File2_Page3**
B_File1_Page1
B_File1_Page2
**B_File1_Page3**
B_File2_Page1
B_File2_Page2
B_File2_Page3
**B_File2_Page4**
C_File1_Page1
C_File1_Page2
C_File1_Page3
C_File1_Page4
**C_File1_Page5**
uj5u.com熱心網友回復:
正則運算式
/(^.*_Page)\d $(?!\r?\n\1\d $)/gm
或者,如果您需要.jpg對匹配進行擴展,則如下所示:
/(^.*_Page)\d \.jpg$(?!\r?\n\1\d \.jpg$)/gm
例子
https://regex101.com/r/Q2Ymk2/1
或使用.jpg擴展名:https :
//regex101.com/r/Z0MSHJ/1
描述
- 第一捕獲組
(^.*_Page)^在行首斷言位置.匹配任何字符(行終止符除外)*在零次和無限次之間匹配前一個令牌,盡可能多地,根據需要回饋(貪婪)_Page_Page逐字匹配字符(區分大小寫)
\d匹配一個數字(相當于[0-9])在一次和無限次之間匹配前一個令牌,盡可能多次,根據需要回傳(貪婪)$在行尾斷言位置- 負前瞻
(?!\r?\n\1\d $)- 斷言下面的正則運算式不匹配
\r匹配回車符 (ASCII 13)?匹配0到1次之間的前一個令牌,盡可能多,根據需要回傳(貪婪)
\n匹配換行(換行)字符(ASCII 10)\1匹配與第一個捕獲組最近匹配的相同文本\d匹配一個數字(相當于[0-9])在一次和無限次之間匹配前一個令牌,盡可能多次,根據需要回傳(貪婪)$在行尾斷言位置
全域模式標志
g修飾符:全域。所有比賽(第一場比賽后不回傳)m修飾符:多行。導致^并$匹配每行的開頭/結尾(不僅是字串的開頭/結尾)
uj5u.com熱心網友回復:
使用正則運算式,我認為只能收集到最后一次出現的情況。
主要是因為沒有用于計數的正則運算式構造。
如果您需要計數,匹配所有頁面,(.*?Page\d )然后排序和唯一。
如果只獲取每個的最后一頁就足夠了,那么這個
(.*?Page)\d (?![\s\S]*\1)
https://regex101.com/r/iP3FcV/1
( .*? Page ) # (1)
\d
(?! [\s\S]* \1 )
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/361183.html
