我怎樣才能捕捉到下面所需的捕獲?我這樣做了Regex ONE.*(ONE.),但它捕獲了整個字串。
Notedpad :
1 ONE; TWO;THREE;ONE;FOUR;FIVE
2 測驗
3 TEST
4 TEST
5 TEST
期望的捕獲。如果ONE有1個匹配,那么回傳ONE;TWO;THREE,否則如果ONE有2個匹配,那么回傳ONE;FOUR;FIVE。
uj5u.com熱心網友回復:
你可以使用
^.*KONE.*
該模式匹配:
^字串的開始.*匹配任何字符0 次KONE忘記到目前為止所匹配的內容,回溯到最后出現的ONE來匹配它 。
.*匹配該行的其余部分 。
uj5u.com熱心網友回復:
在Toad SQL中,使用
SELECT REGEXP_SUBSTR(Column, ' 。 *(ONE.*)'/span>, 1, 1, NULL, 1)
解釋
--------------------------------------------------------------------------------
.* any character except
(0 or more times
(匹配最多數量))
--------------------------------------------------------------------------------
( group and captureto 1:
--------------------------------------------------------------------------------
ONE 'ONE'
--------------------------------------------------------------------------------
.* any character except
(0 or more times
(匹配最多數量))
--------------------------------------------------------------------------------
) end of 1
在Notepad 中,使用
。.*KONE(?:(?!ONE).)*。
參見regex證明。
解釋
--------------------------------------------------------------------------------
.*任何字符,除了
(0 or more times
(匹配最多數量))
--------------------------------------------------------------------------------
K matc重置運算子
--------------------------------------------------------------------------------
ONE 'ONE'/span>
--------------------------------------------------------------------------------
(?: 組,但做不捕獲(0 或更多次
(匹配最多數量))。)
--------------------------------------------------------------------------------
(?!向前看,看看如果沒有。
--------------------------------------------------------------------------------
一個'ONE'。
--------------------------------------------------------------------------------
) 前瞻性的結束
--------------------------------------------------------------------------------
.任何字符,除了
--------------------------------------------------------
uj5u.com熱心網友回復:
你也可以使用(?:ONE.*)?(ONE.*)并從第一個捕獲組中檢索你的結果。
這個詞組將始終嘗試匹配一行中的兩個ONE,但讓你訪問與第二個ONE相關的部分。當只有一個時,這就是唯一的匹配部分。
你可以在這里嘗試。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/323773.html
標籤:
上一篇:忽略最后一個空格的Regex
