首页 > 解决方案 > 正则表达式 - 获取两个 % 字符之间的内容,没有任何包含空格的匹配项

问题描述

我试图在两个%不包含空格的字符之间获取内容。

这是我到目前为止所拥有的:(?<=\%)(.*?)(?=\%)

我想我需要在\S某个地方使用。我仍然无法弄清楚如何使用它。总是有两种情况:

  1. 我仍然得到所有这些,即使是带有空格字符的
  2. 我找不到任何匹配项

一个字符串看起来像这样:

占位符称为 %Test%! 现在您可以将它与真正的占位符一起使用。但是,如果我使用更多的 %Test2% 占位符,它将不再起作用:/。%Test3% 糟透了!

标签: javaregex

解决方案


如果我正确理解你的问题,那么%(\w+)%就会为你做

    String str = "The placeholder is called %Test%! Now you can use it with real placeholders. But if I use more %Test2% placeholders, it won't work anymore :/. %Test3% sucks cause of that!";
    String regex = "%(\\w+)%";//or %([^\s]+)% to fetch more special characters
    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(str);
    while (matcher.find()) {
        System.out.println(matcher.group(1));
    }

输出:

Test
Test2
Test3

推荐阅读