我必须为这种类型的字符串创建一个正则表达式检查:
"TEST_PROCESS_"+${variable}
"TEST_PROCESS_"+${variable}+"_PRODUCT"
"TEST_PROCESS_"+${variable}+"_PRODUCT_NEW"
这是我的正则表达式检查:
\"(?:[A-Z]+_{1})+\"\+\$\{[a-z]+}(\+\"_{1}[A-Z_]+\")?
这是我的代码:
String test = "\"TEST_PROCESS_\"+${variable}+\"_PRODUCT\"";
if (Pattern.matches("\"(?:[A-Z]+_{1})+\"\\+\\$\\{[a-z]+}(\\+\"_{1}[A-Z_]+\")?", test))
System.out.println("valid format");
我遇到的问题是以下类型的字符串在不应该匹配的时候匹配了:
"TEST_PROCESS_"+${variable}+"_PRODUCT_" the last _ is not ok
"TEST_PROCESS_"+${variable}+"__PRODUCT" __ should not pass
谢谢大家!
2条答案
按热度按时间fdx2calv1#
对于
${variable}
之后的部分,可以使用与之前部分相同的技术,并且需要将正则表达式固定在行首和行尾:演示here。
llycmphe2#
您必须限制在每个下划线之后必须至少有一个字符。
如果您希望捕获或不捕获的组,则可以使用此选项
经过字符串的 Package 和连接后,它将变成
从Java15开始,你可以使用文本块,这有助于不必要的引号转义。