如何在java中使用正则表达式提取最后一个最短的字符串

时间:2015-07-21 17:08:33

标签: java regex shortest

如何在下面提取粗体字符串

  

string:

     
      
  1. hello world blah -d blah vlaah -n blah vlahh
  2.   
  3. hello world blah -n blah vlahh -d blah vlaah
  4.   
  5. hello world blah -d blaaah
  6.   

我试过了。 -[dn] .*$但它找到了最长的匹配字符串,如下所示

  
      
  1. hello world blah -d blah vlaah -n blah vlahh
  2.   

我想提取最短的匹配字符串。提前谢谢

2 个答案:

答案 0 :(得分:5)

您可以使用negative lookahead来避免匹配匹配中的其他-d/-n

-[dn] (?!.*?-[dn]).*$

RegEx Demo

答案 1 :(得分:2)

在吃饭之前可以抛出greedy .*

^.*(-[dn] .*)$

抓住第一个capture group的匹配。见test at regex101