如果我有以下數據:如何根據表達式的優先級匹配正則表達式?
abc1dogs
a1cat2dogs
turtles
,我想提取所有文字以下任何一個「1」,「2」,或者如果行不包含一個「1」或「2」?需要使用的附加規則是,如果記錄中存在「1」和「2」,那麼我只需要提取「2」後的值。我試着使用:
(?<=[12])(.*)
那差點,但它返回:
dogs
cat2dogs
我想這回是:
dogs
dogs
turtles
如果我有以下數據:如何根據表達式的優先級匹配正則表達式?
abc1dogs
a1cat2dogs
turtles
,我想提取所有文字以下任何一個「1」,「2」,或者如果行不包含一個「1」或「2」?需要使用的附加規則是,如果記錄中存在「1」和「2」,那麼我只需要提取「2」後的值。我試着使用:
(?<=[12])(.*)
那差點,但它返回:
dogs
cat2dogs
我想這回是:
dogs
dogs
turtles
與PCRE正則表達式引擎這個略顯臃腫的作品之一:
(?<=2).*|(?<=1)[^2]*$|^[^12]*$
它確保(如果它發現1
)字符串的其餘部分不包含2
s。同樣,如果要匹配整個字符串,則字符串中不允許有1
和2
。
我使用http://regex.powertoy.org/(Java的正則表達式語法)。那隻會從第二行返回「狗」 – GregH
你是僅僅用於測試還是你最終會使用它?問題是,它不支持多行模式(否則,'$'也會匹配行尾)。如果您只是將輸入作爲單行添加,它將起作用(並且如果您使用支持多行模式的工具,則會得到完全相同的結果) –