这是我的示例字符串。
[echo] SampleProject 解决方案目前有 85% 的代码覆盖率。
我想要的输出应该是。
SampleProject 解决方案目前具有 85% 的代码覆盖率。
顺便说一句,我解决了这个问题,因为我正在使用 Jenkins 浏览我的 CI 中的日志。
有什么帮助吗?谢谢..
这是我的示例字符串。
[echo] SampleProject 解决方案目前有 85% 的代码覆盖率。
我想要的输出应该是。
SampleProject 解决方案目前具有 85% 的代码覆盖率。
顺便说一句,我解决了这个问题,因为我正在使用 Jenkins 浏览我的 CI 中的日志。
有什么帮助吗?谢谢..
您可以尝试使用令牌中的substText
参数BUILD_LOG_REGEX
来替换与您的匹配的文本regex
新的可选参数: ${BUILD_LOG_REGEX, regex, linesBefore,linesAfter, maxMatches, showTruncatedLines, substText } 允许用文本替换匹配的正则表达式。这在文本包含对捕获组的引用(即 $1、$2 等)时特别有用
使用以下将从所有日志中删除前缀 [echo] ,
${BUILD_LOG_REGEX, regex="^\[echo] (.*)$", maxMatches=0, showTruncatedLines=false, substText="$1"}
\[[^\]]*\]
将匹配您要删除的位。只需使用字符串替换函数将该位替换为空字符串。
Andrew 的想法是正确的,但是使用 Perl 风格的正则表达式语法(包括 Java 的内置正则表达式引擎),您可以做得更好:
str.replaceAll("\\[.*?\\]", "");
(即,使用匹配表达式\[.*?\]
。?
指定最小匹配:因此它将在第一次]
找到时完成匹配。)