Java 正则表达式到 groovy

Java regex to groovy

我在 java 中得到了这段代码,它用白色 space 替换了正则表达式:

private static final String SCRUB_REGEX = "[\<\>\\"\'\(\)\\\n\r\f]";
private static final String SCRUB_REPLACEMENT = " ";
String trim = value.replaceAll(SCRUB_REGEX, SCRUB_REPLACEMENT).trim();

我正在尝试在 SoapUI 的 groovy 脚本中使用它,但它似乎实际上并不 trim。 groovy 不识别 java 正则表达式吗?

temp =testStep.getPropertyValue(sorted).replaceAll("[\<\>\\"\'\(\)\\\n\r\f]", " ").trim()

我已经完成导入到导入 java.util.regex。*

没有输入和输出很难说,但有几点评论:

  1. 在字符 class(括在方括号 [] 中)内的特殊字符不需要转义。您仍然需要对特殊构造使用单个转义符。您可以改用以下模式:

"[<>\"'()\n\r\f]"

  1. 您可能希望只用一个空格替换多次出现的字符。在这种情况下,添加一个量词,例如:

"[<>\"'()\n\r\f]+"

  1. String.trim 只修剪给定的 String 的开头和结尾空格。中间的任何东西都不会被修剪。如果 String 完全是空白,那么 trim 将 return 一个空 String.

你不需要import java.util.regex.*

斜杠字符串让事情变得更简单:

String SCRUB_REGEX = /[<>"'()\\n\r\f]/
String SCRUB_REPLACEMENT = ' '
String trim = value.replaceAll(SCRUB_REGEX, SCRUB_REPLACEMENT).trim();

所以这将替换所有:

  • <
  • >
  • "
  • '
  • (
  • )
  • \
  • \n
  • \r
  • \f

有了space