正则表达式匹配的问题 源字符串: [ss:test]目标字符串:test如何通过正则表达式取出[ss:??]问号代表的词? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 // 一 String str = "[ss:test]"; String[] s = str.replaceAll("\\[ss:(.*?)\\]","$1").split(","); System.out.println(s[0]); // 二 Matcher matcher = Pattern.compile("(?<=\\[ss:).*?(?=\\])").matcher(str); if(matcher.find()) System.out.println(matcher.group()); System.out.println("[ss:test]".substring(4, s.length()-1)); public static void main(String[] args) { // 一 String str[] = {"[ss:test]" ,"[aa:321]" ,"[bb:llln]" ,"[ui:321s]" ,"[lljfds:111]" }; for (String string : str) { String[] s = string.replaceAll("\\[.*?:(.*?)\\]","$1").split(","); System.out.println(s[0]); } System.out.println(); // 二 for (String string : str) { //如果 前面字符不超过10位 ,才可以这样用。有局限性 。 但是又必须给他指定一个最大长度 Matcher matcher = Pattern.compile("(?<=\\[.{0,10}:).*?(?=\\])").matcher(string); if(matcher.find()) System.out.println(matcher.group()); } System.out.println(); // 三 用这种 方式 , 更好 for (String string : str) { Matcher matcher = Pattern.compile("(\\[.*?:)(.*?)(\\])").matcher(string); if(matcher.find()) System.out.println(matcher.group(2)); } } 直接substr好了,干嘛费那么大劲正则呀?str.substring(str.indexOf(":"), str.length() - 1); 失误应该是这样的。str.substring(str.indexOf(":") + 1, str.length() - 1); String str="[asdf:aaa]"; System.out.println(str.replaceAll("(?<=\\[.{1,99}:)(.+)(?=\\])", "asdf")); public static void main(String[] args) { String str = "[ss:test]"; str = str.replaceAll("\\[.*?:(.*?)\\]","$1"); System.out.println(str); } 搞错了,不是替换 String str="[asdf:aaa]"; System.out.println(str.replaceAll("(?:\\[.+:)(.+)(?:\\])", "$1")); 也许你的办法确实不错,不过我没有你用的Pattern和Matcher 2个工具类,所以用不了你说的方式,方案2我试过了 可惜还是不能正确匹配,至于第一个也不行 ,因为这个“$1” 在我用的语言里面是原样替换的 还有一种情况是:源字符串:[ss:test]dwdwadwadwa目标字符串:test这种也需要成功匹配。 public class zjbds { public static void main(String[] args){ System.out.println("[ss:test]dwdwadwadwa".replaceAll(".*:|].*", "")); System.out.println("[ss:test]".replaceAll(".*:|].*", "")); }} 因为这个“$1” 在我用的语言里面是原样替换的你的什么语言?任何支持正则的语言都有类似的语法。像js中的 \1 ,java 中的 $1 谢谢大家的指点,我的问题已经解决了。[code=ActionScript] var reg2:RegExp = /\[.*?:(.*?)\]/i; var test:String = "[ss:test]dwdwadwadwa[ar:test1]"; trace(reg2.exec(test)[1])[/code] 刷新窗口添加JTable表 关于文件打开选择器 不会死锁的问题? 关于两个List组合成为一个新List的问题! 关于string类的copyValueOf函数 作入门,求最简单且完整的一个servlet例子 java上机试题,大家来练练手 如何连接sqlserver2000数据库 我的jbuilder没有crack目录,也就没办法使用了吗?:( 才装WIN2000 WERVER版不久,立即面临一大堆总题,谁能替我解惑? 继承,多态 如何用JAVA 判断一个文本文件的编码字符集?高分请教各位大侠!!!
// 一
String str = "[ss:test]";
String[] s = str.replaceAll("\\[ss:(.*?)\\]","$1").split(",");
System.out.println(s[0]); // 二
Matcher matcher = Pattern.compile("(?<=\\[ss:).*?(?=\\])").matcher(str);
if(matcher.find())
System.out.println(matcher.group());
public static void main(String[] args) {
// 一
String str[] = {"[ss:test]" ,"[aa:321]" ,"[bb:llln]" ,"[ui:321s]" ,"[lljfds:111]" };
for (String string : str) {
String[] s = string.replaceAll("\\[.*?:(.*?)\\]","$1").split(",");
System.out.println(s[0]);
}
System.out.println();
// 二
for (String string : str) { //如果 前面字符不超过10位 ,才可以这样用。有局限性 。 但是又必须给他指定一个最大长度
Matcher matcher = Pattern.compile("(?<=\\[.{0,10}:).*?(?=\\])").matcher(string);
if(matcher.find())
System.out.println(matcher.group());
}
System.out.println();
// 三 用这种 方式 , 更好
for (String string : str) {
Matcher matcher = Pattern.compile("(\\[.*?:)(.*?)(\\])").matcher(string);
if(matcher.find())
System.out.println(matcher.group(2));
}
}
str.substring(str.indexOf(":"), str.length() - 1);
str.substring(str.indexOf(":") + 1, str.length() - 1);
String str="[asdf:aaa]";
System.out.println(str.replaceAll("(?<=\\[.{1,99}:)(.+)(?=\\])", "asdf"));
public static void main(String[] args) {
String str = "[ss:test]";
str = str.replaceAll("\\[.*?:(.*?)\\]","$1");
System.out.println(str);
}
String str="[asdf:aaa]";
System.out.println(str.replaceAll("(?:\\[.+:)(.+)(?:\\])", "$1"));
方案2我试过了 可惜还是不能正确匹配,至于第一个也不行 ,因为这个“$1” 在我用的语言里面是原样替换的
源字符串:[ss:test]dwdwadwadwa
目标字符串:test
这种也需要成功匹配。
public class zjbds {
public static void main(String[] args){
System.out.println("[ss:test]dwdwadwadwa".replaceAll(".*:|].*", ""));
System.out.println("[ss:test]".replaceAll(".*:|].*", ""));
}
}
你的什么语言?任何支持正则的语言都有类似的语法。像js中的 \1 ,java 中的 $1
[code=ActionScript]
var reg2:RegExp = /\[.*?:(.*?)\]/i;
var test:String = "[ss:test]dwdwadwadwa[ar:test1]";
trace(reg2.exec(test)[1])
[/code]