2015-12-02 73 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

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