在这种情况下如何使用正则表达式?

时间:2018-04-08 00:23:37

标签: java regex regular-language

字符串是:“LinksImagesListCodeHt1233ddmlImagesConsider112dd2Download”,我想得到“ImagesConsider112dd2Download”。所以我使用了这个表达式“Images。*?Download”。但它匹配“ImagesListCodeHt1233ddmlImagesConsider112dd2Download”。正确的表达应该是什么?

暂时,有一种丑陋的方法可以解决这个问题:

Pattern p = Pattern.compile(StringUtils.reverse("Download")+ ".*?" + StringUtils.reverse("Images") );
String s = "LinksImagesListCodeHt1233ddmlImagesConsider112dd2Download";
s = StringUtils.reverse(s);
Matcher m = p.matcher(s);
while (m.find()){
    m.end();
    System.out.println(StringUtils.reverse(m.group()));
}

1 个答案:

答案 0 :(得分:0)

要匹配ImagesDownload之间不包含单词Images的文字,可以使用负面的外观,如下所示

Images((?!Images).)*Download

解释
  Images - 匹配文字字符串Images
  (?!Images). - 匹配不遵循Images
的字符   ((?!Images).)* - 匹配零次或多次