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

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

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

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

  1. 我仍然得到所有这些,即使是那些带有空格字符的

  2. 我找不到任何匹配项

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

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


慕桂英546537
浏览 318回答 2
2回答

繁花不似锦

如果我正确理解你的问题,那么%(\w+)%就会为你做&nbsp; &nbsp; 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!";&nbsp; &nbsp; String regex = "%(\\w+)%";//or %([^\s]+)% to fetch more special characters&nbsp; &nbsp; Pattern pattern = Pattern.compile(regex);&nbsp; &nbsp; Matcher matcher = pattern.matcher(str);&nbsp; &nbsp; while (matcher.find()) {&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(matcher.group(1));&nbsp; &nbsp; }输出:TestTest2Test3

BIG阳

您可以使用(?<=%)[^%\s]+(?=%)请参阅正则表达式演示。或者,如果您更喜欢捕获:%([^%\s]+)%请参阅另一个演示。该[^%\s]+部分匹配一个或多个既不%是空格也不是空格的字符。请参阅Java 演示:String line&nbsp; = "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!";Pattern p = Pattern.compile("%([^%\\s]+)%");Matcher m = p.matcher(line);List<String> res = new ArrayList<>();while(m.find()) {&nbsp; &nbsp; res.add(m.group(1));}System.out.println(res); // => [Test, Test2, Test3]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java