Java正则表达式的问题

对于下面给定的字符串,如何提取出其中的变量。
变量用法:{$变量名}

如:{$LOAD_PATH}/61347d650c1a451e98b0fe8389b25f3c/{$TIMESTAMP}

应该识别出包含两个变量,分别是LOAD_PATH和TIMESTAMP。

6个回答

[code="java"]String str = "{$LOAD_PATH}/61347d650c1a451e98b0fe8389b25f3c/{$TIMESTAMP}";
Pattern pattern = Pattern.compile("\{\$(\w+)\}");

Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
System.out.println(matcher.group(1));
}[/code]

应该还要考虑到{}的情况,否则就会把路径里面有$的给解析了

是要截取两个字符之间的数据吗(?is)(?<={$LOAD_PATH}).*?(?={$TIMESTAMP} )

crespo1985ban
crespo1985ban 这里是要识别包含的变量,请见说明。
6 年多之前 回复

[code="java"]String str = "{$LOAD_PATH}/61347d650c1a451e98b0fe8389b25f3c/{$TIMESTAMP}";
Pattern pattern = Pattern.compile("\$(\w+)");

    Matcher matcher = pattern.matcher(str);
    while (matcher.find()) {
      System.out.println(matcher.group(1));
    }[/code]

({\$.*?})

lbfhappy 和 bylijinnan 2位仁兄已经给出了拿到变量名称 但是 $LOAD_PATH和$TIMESTAMP 一般我们在页面中是显示了值 所以应该是这样写成这样

String str = "{2222}/61347d650c1a451e98b0fe8389b25f3c/{333}";

Pattern pattern = Pattern.compile("\{(\w+)}");

    Matcher matcher = pattern.matcher(str);   
    while (matcher.find()) {   
        System.out.println(matcher.group(1));   
    } 

如果需求非要拿变量名 直接copy lbfhappy 和 bylijinnan 2位仁兄的代码即可!

[code="java"]
String s = "{$LOAD_PATH}/61347d650c1a451e98b0fe8389b25f3c/{$TIMESTAMP}";
Pattern p = Pattern.compile("(?<=\{\$)[A-Z_]+(?=\})");
Matcher m = p.matcher(s);
while (m.find()) {
System.out.println(m.group());
}
[/code]

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐