一个正在表达式:(例) A*B ,
一个用来匹配的字符串:(例) 123AB75942A8506B4213
我正通过 A*B这个正在表达式来取到AB和A8506B,
求一个方法:
public String[] getStrExpression("A*B","123AB75942A8506B4213"){
//do something
return string[];
}
数组中的值应该是AB和A8506B;另:返回的字符串中不能有AB75942A8506B。(附加,如果只解答上题也给分)。
一个用来匹配的字符串:(例) 123AB75942A8506B4213
我正通过 A*B这个正在表达式来取到AB和A8506B,
求一个方法:
public String[] getStrExpression("A*B","123AB75942A8506B4213"){
//do something
return string[];
}
数组中的值应该是AB和A8506B;另:返回的字符串中不能有AB75942A8506B。(附加,如果只解答上题也给分)。
public String[] getStrExpression(String regex,String changeStr){
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
Matcher m = pattern.matcher(changeStr);
List<String> list = new ArrayList<String>();
while (m.find()) {
list.add(m.group(2));
}
return list.toArray(new String[0]);
}
我的JDK是1.4的该了一下
public static String[] getStrExpression(String regex,String changeStr){
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
Matcher m = pattern.matcher(changeStr);
List list = new ArrayList();
while (m.find()) {
String str= m.group(2);
list.add(str);
}
return (String[]) list.toArray(new String[0]);
}报错 :怎么回事
Exception in thread "main" java.lang.IndexOutOfBoundsException: No group 2
at java.util.regex.Matcher.group(Unknown Source)
at com.sinosoft.searchutils.SearchString1.getStrExpression(SearchString1.java:43)
at com.sinosoft.searchutils.SearchString1.main(SearchString1.java:50)
public String[] getString(String str){
List<String> list=new LinkedList<String>();
String regex="A\\w*?B";
Matcher m=Pattern.compile(regex).matcher(str);
while(m.find()){
list.add(m.group());
}
String []rtn=new String[list.size()];
list.toArray(rtn);
return rtn;
}
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static String[] getStrExpression(String regex,String str){
List<String> temp = new ArrayList<String>();
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(str);
while(m.find()){
temp.add(m.group());
}
String[] result=new String[temp.size()];
temp.toArray(result);
return result;
}
public static void main(String[] args){
String regex="A.*?B";
String str="123AB75942A8506B4213";
String[] result=getStrExpression(regex,str);
for(String s:result){
System.out.println(s);
}
}
}
^AB|A.*(1!A).*B|.*(1!<B).*B$
public static void main(String[] args){
String aim="123AB75942A8506B4213";
Pattern p = Pattern.compile("[A][0-9]*[B]");
Matcher m = p.matcher(aim);
StringBuffer temp = new StringBuffer();
while (m.find()) {
temp.append(aim.substring(m.start(),m.end()));
temp.append("\r\n");
}
//返回以换行分割的字符串;如果要求返回String数组,在处理一下就可以了,
System.out.println(temp.toString());
}其实返回一个Array也是一样的。
你写的Regex:A*B表示以多个或者0个A打头且以B结尾的字符串,并不能匹配你的目标字串