Java正则表达式的问题

问题描述

对于下面给定的字符串,如何提取出其中的变量。变量用法:{$变量名}如:{$LOAD_PATH}/61347d650c1a451e98b0fe8389b25f3c/{$TIMESTAMP}应该识别出包含两个变量,分别是LOAD_PATH和TIMESTAMP。 问题补充:补充说明:这里要通过正则表达式识别出包含的变量名称?

解决方案

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));}应该还要考虑到{}的情况,否则就会把路径里面有$的给解析了
解决方案二:
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());}
解决方案三:
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位仁兄的代码即可!
解决方案四:
({$.*?})
解决方案五:
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)); }
解决方案六:
是要截取两个字符之间的数据吗(?is)(?<={$LOAD_PATH}).*?(?={$TIMESTAMP} )

时间: 2024-09-11 16:51:52

Java正则表达式的问题的相关文章

java正则表达式匹配斜杠

在正则表达式里面匹配一个斜杠,需要用4个斜杠: Java代码 import java.util.regex.Matcher; import java.util.regex.Pattern; public class test { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String textString = new String ("\\\&q

Java正则表达式实现条件查询浅析

Java正则表达式实现条件查询实例是如何的呢?我们在实际开发的过程中会碰到这样子的实际需求,那么我们来看看具体的实现过程,希望对你有所帮助. Java正则表达式实现条件查询实例: //Java正则表达式实现条件查询的要求:以正则条件查询指定目录下文件 //用于缓存文件列表 private ArrayList files = new ArrayList(); //用于承载文件路径 private String _path; //用于承载未合并的正则公式 private String _regexp

Java正则表达式入门

大家都知道,正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它用以描述在查找文字主体时待匹配的一个或多个字符串.正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配. 自从jdk1.4推出java.util.regex包,就为我们提供了很好的JAVA正则表达式应用平台. 因为正则表达式是一个很庞杂的体系,所以我仅例举些入门的概念,更多的请参阅相关书籍及自行摸索. \\ 反斜杠 \t 间隔 ('\u000

Java正则表达式中的捕获组的概念及相关API使用

要弄清这三个方法,首先要弄清Java正则表达式中的捕获组的概念.捕获组也就是Pattern中以括号对"()"分割出的子Pattern.至于为什么要用捕获组呢,主要是为了能找出在一次匹配中你更关心的部分.捕获组可以通过从左到右计算其开括号来编号.例如,在表达式 "(x)(y\\w*)(z)" 中,存在三个这样的组:  1.  x2.  y\\w*3.  z组零始终代表整个表达式.之所以这样命名捕获组是因为在匹配中,保存了与这些组匹配的输入序列的每个子序列.捕获的子序列

java正则表达式的一个问题

问题描述 java正则表达式的一个问题 我现在需要写一个正则匹配 BA BC CA CB 中的一个,不分大小写,两字母中间可以有斜杠,这个组合可以出现两次,用逗号隔开 我写了这样一个正则,但是太长了,有简便一些的写法吗? [B|b]/?[A|a]|[C|c]/?[A|a]|[B|b]/?[C|c]|[C|c]/?[B|b]((,|,)[\s\p{Zs}]*[B|b]/?[A|a]|[C|c]/?[A|a]|[B|b]/?[C|c]|[C|c]/?[B|b])? 解决方案 正则中可以忽略大小写匹配

字符串-java正则表达式匹配数字

问题描述 java正则表达式匹配数字 G3811/ G3885/ G655/l G030/l G3849/ G0150/ G5292/ G955/l G025/l G5300/ 这是控制台输出的字符串,但是我只想要他的数字 怎么匹配 解决方案 Pattern p = Pattern.compile("[0-9]"); Matcher m = p.matcher(elem.attr("abs:href").substring(22, 28)); while (m.fi

java正则表达式匹配问题

问题描述 java正则表达式匹配问题 我现在有一个字符串 String str= "[权利要求 5] 如权利要求 4所述 的墨盒 ,其特征在于 :" 想要提取到第几号权力要求 Pattern p = Pattern.compile("^[权利要求 (d)]"); Matcher m = p.matcher(str); if(m.find()){ System.out.println("["+m.group()+"]"); }

java 正则表达式问题

问题描述 要将一下字符串中的红色字体部分用java正则表达式替换为空,正则表达式应该怎么样写? body/div[3][@class='content']/div[2][@class='content-outer']/div[2][@class='fauxborder-left content-fauxborder-left']/div[2][@class='content-inner']/div[2][@class='main-outer']/div[2][@class='fauxborder

java-求助关于Java正则表达式~~

问题描述 求助关于Java正则表达式~~ 现在已经用ICTCLAS完成了分词工作,结果如下:不/d 怎么/ryv 好/a ,/wd 摄像头/n 差/a 机型/n 薄/a ,/wd 外观/n 颜色/n 还/d 算/v 比较/d 好看/a 的/ude1 ,/wd 系统/n 什么/ry 的/ude1......想用正则表达式将其中标记为/n的词提取出来,不知道怎么写...求帮忙~ 解决方案 (?<=s)w+?/n

Java正则表达式的应用

在很多种情况下,我们都必须对字符串进行匹配,以便判断字符串的格式是否符合要求,对字符串中的内容进行提取.比如,我要从一段话aabdfe中,判断这段话是否有包含ab这个词,那么如果用if-else来判断的话,那么我们必须遍历整个字符串,当遇到一个a,记录一下状态,判断下一个是否是所要的b.这个过程随着要判断的内容(在这里是ab)和要被字符串的长度的增长,恶心程度递增.但是又因为字符串的判断实在是太常要用到啦,所以就有了正则表达式这么个东西,正则表达式其实就是一个字符串识别的规则,通过这个规则,我们