代码之家  ›  专栏  ›  技术社区  ›  jiangke

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

  •  1
  • jiangke  · 技术社区  · 7 年前

    字符串是:“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 回复  |  直到 7 年前
        1
  •  0
  •   Moti Korets    7 年前

    将文本匹配到 Images Download 其中不包含单词 图像 在内部,你可以像这样使用负面环视

    Images((?!Images).)*Download
    

    解释
    图像 --匹配文字字符串 图像
    (?!Images). --匹配不跟在后面的字符 图像 单词
    ((?!Images).)* --匹配零次或多次