正则表达式“inter”文本

时间:2014-03-12 16:58:28

标签: java regex

我正在尝试创建一个正确的正则表达式来验证某些值,我将在下面解释:

我必须用他来验证这一行:

$_globalVariables/ns:GlobalVariables/VARIABLENAME/ESB/System
$_globalVariables/ns:GlobalVariables/VARIABLENAME2/ESB/System
$_globalVariables/ns:GlobalVariables/VARIABLENAME3/ESB/System

这一行:

$_globalVariables/ns:GlobalVariables/[varname]/ESB/Sistema

我尝试了一些组合,并阅读有关正则表达式,但我是" newbie"在这个主题中,我无法得到正确的结果。

我认为有点像这样:

\$_globalVariables/ns:GlobalVariables/(.*?)/ESB/System
  • \$_globalVariables/ns:GlobalVariables/ - >要在开始时验证的文本
  • (.*?) - >一切
  • /ESB/System - >数学文字结束

对不起我的英文,如果有人需要更多信息,请问我。

1 个答案:

答案 0 :(得分:3)

您必须转义$字符,因为它是一个保留字符,表示根据上下文的行尾/输入。

以下是:

String[] input = {
            "$_globalVariables/ns:GlobalVariables/VARIABLENAME/ESB/System",
            "$_globalVariables/ns:GlobalVariables/VARIABLENAME2/ESB/System",
            "$_globalVariables/ns:GlobalVariables/VARIABLENAME3/ESB/System" };
Pattern p = Pattern.compile("^\\$_globalVariables/ns:GlobalVariables/(.+?)/ESB/System");
for (String s: input) {
    Matcher m = p.matcher(s);
    if (m.find()) {
        System.out.println("Found: " + m.group());
        System.out.println("\t with variable name: " + m.group(1));
    }
}

<强>输出

Found: $_globalVariables/ns:GlobalVariables/VARIABLENAME/ESB/System
 with variable name: VARIABLENAME
Found: $_globalVariables/ns:GlobalVariables/VARIABLENAME2/ESB/System
     with variable name: VARIABLENAME2
Found: $_globalVariables/ns:GlobalVariables/VARIABLENAME3/ESB/System
     with variable name: VARIABLENAME3

备注

  • $Pattern - &gt;中被双重转义\\$
  • 使用 1 + 不情愿的量词代替 0 + 不情愿的第1组量词:我们假设变量名中至少有一个字符,对吗?
  • Java Pattern页面API here