2017-07-06 183 views
-1

我尝试了几个其他链接,如Regex Match all characters between two stringsRegex get all content between two characters 但它们似乎不符合此用例。正则表达式匹配2个字符之间的所有字符串

我想得到所有的名字,土豆和番茄。例如,从|>

text = "with <@U0D08NR3|potato> and <@U1698M96|tomato> please" 

text.scan((?<=|).*?(?=>))似乎没有工作,要么..

请指引我的正则表达式的神。

+0

['<@ [A-Z0-9] {8} \ |(。*?)>'](https://regex101.com/r/X8PQ3P/1) – Tushar

回答

1

你忘了躲避管(|),它现在被解释为指示器的交替

您与逃脱管正则表达式:

(?<=\|).*?(?=>) 

Here you can see the result

+0

未找到全部的名字虽然 – Wboy

+1

你是什么意思?你能举一个例子,说明什么是和不匹配? – ScintillatingSpider

+0

对不起,我在regex101.com上测试它,它没有正确显示结果!它在Ruby上工作正常:)当计时器启动时,我会接受你的答案谢谢! :) – Wboy

1

刚刚逃过|(?<=\|).*?(?=>)。没有它,正回顾后表示匹配任何

0

试试这个:

text.scan(/\|(\w*)\>/).flatten 
# Returns => ["potato", "tomato"] 

不完全确定这是为什么这个工程。与贪婪和非贪婪匹配有关。请参阅this

相关问题