2015-12-02 26 views
1

考慮像一個字符串:正則表達式提取物最後一次出現忽略新線

"@foo #[email protected]@foo #foo\n 
    foofoofoo\n 
    foo @bar" 

我試着2天,所以這裏提取最後#/@發生之前,「酒吧」的@。現在,我有這樣的[@#](?!.*[@#])似乎工作,除非用戶在那裏插入新行。

有人可以給我一些提示嗎?

+0

'.'與默認的新行不匹配,做一個類似'[\ s \ S]的捕獲' –

+1

相關:http://stackoverflow.com/questions/1979884/how-to-use-javascript- regex-over-multiple-lines – Oli

回答

0

您可以使用此lookhahead正則表達式:

/[#@](?![\s\S]*[#@])/ 

RegEx Demo

(?![\s\S]*[#@])是負先行斷言沒有@或領先於任何線當前位置的#[\s\S]匹配任何字符,包括換行符。

+0

Ty for your help but for a like like'@foo #bar'這個正則表達式給了我'@'當我期待'#' –

+0

'@foo#bar'確實會匹配'#'正如你可以在這個演示中看到的那樣](https://regex101.com/r/gS5qQ1/2) – anubhava

+1

你真是太棒了,幫了我很多! –

相關問題