2017-02-04 74 views
3

的數據看起來像這樣:正則表達式刪除線的端回車如果存在

0.43,0.57,0.71,0.29,0.71,1.00,0.57,1.00\r 
0.43,0.57,0.71,0.29,0.71,1.00,0.57,1.00 
0.43,0.57,0.71,0.29,0.71,1.00,0.57,1.00\r 

和我想提取回車字符(在樣品中上述標有\r)。我一直在試圖用這個和gm捕獲組:

(.*)(?:\\r)$ 

但這隻能用\r線相匹配。我認爲解決方案是在$之前添加一個?,但這不起作用。

演示:https://regex101.com/r/jArLdS/1

乾杯

+1

是否要截取所有*行*,但不包括'\ r' - 回車 - 最後?使用'[^ ​​\ r \ n] +'。上面的示例字符串包含反斜槓+字母「r」。否則,請使用['/(.+?)(?:\\r)?$/gm'](https://regex101.com/r/8nQEqg/1)。 –

+0

這些意思是* literal *'\ r',還是一個回車符?你只是想把所有東西都匹配到'\ r',或者你真的需要捕獲所有的東西,* * \ r' *和'\ r'分開嗎? – Bohemian

+0

@波希米亞對不起,不好意思。當我寫這個問題時,我將\ r解釋爲一個兩個字符的字符串,但它原來是回車符 - 這使得解決方案如上所述變得微不足道。真的,我對另一個他也解決了的案子更感興趣 – AlexG

回答

2

如果你想匹配排除\r所有行 - 一個回車 - 使用

[^\r\n]+ 

這是一個否定字符類[^...])匹配一個或多個(由於+量詞)除\r\n以外的字符。

0

Live Demo

試試這個正則表達式:

^([^\\r\n]*)(:?\\r)?$ 

這是假設你的意思是不包括\r,而不是提取\r因爲你原來的正則表達式這是否。

0

便攜式解決方案。

(^.*?)(\\r)(\r\n|\n)

這3個捕捉組,由左到右,開始1,不0

與捕獲組1和3更換你的字符串,跳過2

捕捉組通常語法像\1$1爲使用它們大多數語言。