① java 如何查找匹配的字符和字符串
你可以自己写个方法的!
从返回的第一个位置开始substring,同时记住位置。
public int[] getOffset(String str,String s){
int[] arr=new int[str.length];
int j=1;
while(str.indexOf(s)!=-1){
int i=str.indexOf(s);
if(j==1){
arr[j-1]=i;
}else{
arr[j-1]=i+arr[j-2]+1;
}
String st=str.substring(i+1);
System.out.println(st);
str=st;
j++;
System.out.println("j="+j);
}
return arr;
}
public static void main(String[] args) {
String str="abcaabbddab";
StringText st=new StringText();
int[] i=st.getOffset(str, "ab");
for(int j:i){
System.out.println(j);
}
}
② 请问java字符串处理的正则表达式中,要怎么匹配//...和/*...*/(也就是匹配java注释) 谢谢!
下面是关于java的正则处理原理和上面的基本一样,我觉得如果真的匹配java代码里面的注释这个还不够还需要很多的条件因为有可能你的代码里面本身就有相关字符的处理.所以我认为需要根据你具体的情景进行正则设计
Patternp=Pattern.compile("//.*");
str="//0000";
m =p.matcher(str);
System.out.println(m.matches());
p=Pattern.compile("/\\*.*\\*/");
str="/*999*/";
m =p.matcher(str);
System.out.println(m.matches());
③ Java 正则匹配
我来写正则,已测试:
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
publicclassTest1{
publicstaticvoidmain(String[]args){
Stringptn="(<ahref=[^<]*>)([u4e00-u9fa5]+)(</a>)";//([^<])(/a)
Patternp=Pattern.compile(ptn);
Strings="<ahref=">看</a>啊打发<ahref=ajdfajdk>虹</a>";
Matcherm=p.matcher(s);
while(m.find()){
System.out.println(m.group(0));
}
}
}
如果你网页数据中还有其它<a href = ....>ad</a>,告诉我,我把匹配写得再详细点
④ java正则匹配
按照你的要求分割字符串的Java程序如下
publicclassDD{
publicstaticvoidmain(String[]args){
Stringstr="asd*dasd**asd*asd";
String[]s=str.split("(\*)+");
for(inti=0;i<s.length;i++){
System.out.println("被分割的字符串下标为"+i+"字符串为"+s[i]);
}
}
}
运行结果
被分割的字符串下标为 0 字符串为 asd
被分割的字符串下标为 1 字符串为 dasd
被分割的字符串下标为 2 字符串为 asd
被分割的字符串下标为 3 字符串为 asd
⑤ java正则表达式 如何全局匹配
楼上有个说的很对,用while(m.find())。。。。。
具体就是:
while(m.find())
{
// 处理
String string = m.group();
}
// while中的find,是进行一次搜索,发现后即找到aab,进行循环体中处理,,然后再从上次找的的地方继续向后find。。。。。。。。。直到结束
⑥ java正则表达式匹配
java里的正则表达式默认只匹配一行
若要支持匹配换行符,在建Pattern时使用两个参数的那个方法,加上参数Pattern.DOTALL
Pattern p = Pattern.compile("\\d+.{1,2}\\d{2}:\\d{2};\\d{2},\\d{3}",Pattern.DOTALL);
⑦ java中怎么匹配字符串
------解决方案-------------------------------------------------------- 还是没太懂你的意思、String 有一个contains 方法、 ------解决方案-------------------------------------------------------- 用正则表达式呗,例如 Java code public class Test { public static void main(String[] args) { String line = 投资费用_股票交易费用 ; Pattern pattern = Pattern.compile( 投资费用.*?交易费用 ); Matcher matcher = pattern.matcher(line); System.out.println(matcher.matches()); } } ------解决方案-------------------------------------------------------- String 有一个contains( 你要匹配的字符串 )方法,返回一个boolean 值 或者用indexOf( 你要匹配的字符串 ) 判断返回值,如果为-1 那就是灭有 ------解决方案-------------------------------------------------------- Java code System.out.println( 投资费用abc 交易费用 .matches( 投资费用.*交易费用 )); ------解决方案-------------------------------------------------------- 用正则表达式嘛!
⑧ Java正则表达式 匹配 词组
String regex = "(好看|企业|企业家)";
可以匹配含有"好看"或"企业"或"企业家"的字符串
⑨ java 通配符匹配字符串
第一步实现含?而不含*的 字符串匹配,如对dd?的匹配
第二步,实现含有* 的字符串的匹配,如abc* dd?,主要思路是用* split 字符串,分为两个有效的串,abc, dd?
然后使用步骤一种的方法来查看匹配到的index.
/**
* 找出含?的字符串
* @return
*/
public int checkSubPattern(String src,int begin,String pat){
boolean isFound=true;
if(src.length()-begin < pat.length()){return -1;}
for(int i=begin;i<src.length()-pat.length()+1;i++){
for(int j=0;j<pat.length();j++){
if(pat.charAt(j)!='?' && src.charAt(i+j)!=pat.charAt(j)){
isFound =false;
break;
}
isFound = true;
}
if(isFound){return i;}
}
return -1;
}
public boolean checkStar(String src,String pat){
String[] sub_p = pat.split("\\*");
int begin =0;
for(int i=0;i< sub_p.length;i++){
begin = checkSubPattern(src,begin,sub_p[i]);
System.out.println(begin);
if(begin==-1){return false;}
if(i==0 && pat.charAt(i)!='*' &&begin!=0){return false;}
if((i==sub_p.length-1) && pat.charAt(i)!='*'
&&begin!=(src.length()-
sub_p[i].length())){return false;}
}
return true;
}
⑩ java 正则匹配
没太明白你要匹配啥 <[n]>xxxxxxx</[n]> 你是要匹配<[n]> </[n]>之间的内容?