A. java正则表达式,不能输入引号(单引号和双引号)以及特殊字符<、>、#和&
//写了两个,不知你要的效果是什么
Strings3="a'b"c<d>e#f&g";
//替换所有非法字符
//结果:a*b*c*d*e*f*g
System.out.println(s3.replaceAll("['"<>#&]","*"));
//替换所有非非法字符
//结果:*'*"*<*>*#*&*
System.out.println(s3.replaceAll("[^'"<>#&]","*"));
B. java中的正则表达式
Java正则表达式 (<img.*?)style=\".*?\" 替换成 $1
其中.*表示0个或0以上多个任意字符
.*?表示0个或0以上多个任意字符的非贪婪匹配,就是假如一个句子中有多个style,它匹配距离最近的那个style,同理后面的.*?匹配距离最近的双引号
$1表示反向引用,它代表的是正则表达式中的第一个小括号所括起来的分组的内容,如果有两个小括号括起来的内容,则分别用$1,$2表示它们(在替换后的字符串中)
完整的Java程序如下
123456public class CC { public static void main(String[] args) { String s="<img src=\"file/img/2016/12-28/1234-25521482893088459.jpg\" title=\"1234.jpg\" alt=\"\" width=\"396\" height=\"271\" style=\"width: 396px; height: 271px;\"/>"; System.out.println(s.replaceAll("(<img.*?)style=\".*?\"", "$1")); }}
运行结果
<img src="file/img/2016/12-28/1234-25521482893088459.jpg" title="1234.jpg" alt="" width="396" height="271" />
C. java正则表达式",(=[^\"]+\",|[^\"]+\"$)
我举例说明:
x(?=y)
▲表示:右边紧跟y的x,但只包含x,不包含y
x(?=y|z)
▲表示:右边紧跟y或z的x,但只包含x,不包含y或z
x(?!y)
▲表示:右边不跟y的x,只包含x
你的这个正则表达式完全正确:
,(?=[^\"]+?\",|[^\"]+?\"$)
▲它只匹配1个,
▲▲但条件是:
▲条件1▲:此,右边到第1个",之间有至少1个不是"的字符
▲条件2▲:此,右边到结尾的"之间有至少1个不是"的字符
举例说明:
它匹配下面3行中的前2个,
(每次匹配1个,而不是同时匹配前2个)
x,y,z",
x,y,,",
x,y,z,"
你要匹配这样的空格,只需把此式中的首个,换成空格即可:
(?=[^\"]+?\",|[^\"]+?\"$)
▲这可以处理你举的例子。
如果情况更复杂,请再举例,我继续帮你。
D. java的正则表达式解析
如果你是想获取字串中的数字 那你这段代码是有问题的 正则表达式也是有问题的 你应该这样用
public static void main(String[] args) {
String str = "abc$31.8zhe";
String reg = "[0-9\\.]+";
Pattern p = Pattern.compile(reg);
Matcher m = p.matcher(str);
m.find();
System.out.println(m.group());
}
[0-9\\.]+ 表示的意思是匹配0-9的数字和.本身 "."确实是需要转义的 而且因为在Java中"\"本身就是转义符 所以还需要再次转义 因此变成了"\\." +表示匹配一次或者多次
实际上0-9可以用\\d 代替 \d就表示匹配所有数字
当然这个表达式本身也不完善 比如它会匹配到类似与23. 这样的串 即使小数点后没有数字
楼主你会发现正则表达式和结果相反是因为你可能使用了replaceAll("") 它将所有匹配的片段替换为空 因此你的[^0-9\\.]其实是匹配了除了0-9和"."之外的所有字符 那些字符都被替换成了空 最后你的字串中的abc$zhe被干掉了 而只有没法匹配[^0-9\\.]的31.8被留了下来
E. Java正则表达式为什么是双斜杠
除了定义单个字符之外,也存在一组转义字符:
\\(表示单个\)
\t(表示按下tab)
\n(表示换行)
\"(引号)
\'(单引号)
F. 使用java语言,正则表达式把下面的字符串中的href后面的的两个引号中间的三个字符串取出来
publicstaticvoidmain(String[]args)throwsParseException{
Stringcontent="<ahref="/search?newwindow=1&safe=strict&hl=zh-CN&bih=777&biw=1231&q=boa+made+in+twenty&tbm=isch&tbs=simg:-CBoKCggIARIEXjOHZQw,isz:s&sa=X&ei=-QXDUaCNJMmikwWa24DICA&ved=0CCcQ2A4oAg">小尺寸</a>"+
"</span><spanclass="gl">-"+
"<ahref="/search?newwindow=1&safe=strict&hl=zh-CN&bih=777&biw=1231&q=boa+made+in+twenty&tbm=isch&tbs=simg:-CBoKCggIARIEXjOHZQw,isz:m&sa=X&ei=-QXDUaCNJMmikwWa24DICA&ved=0CCgQ2A4oAw">中尺寸</a>"+
"</span><spanclass="gl">-"+
"<ahref="/search?newwindow=1&safe=strict&hl=zh-CN&bih=777&biw=1231&q=boa+made+in+twenty&tbm=isch&tbs=simg:-CBoKCggIARIEXjOHZQw,isz:l&sa=X&ei=-QXDUaCNJMmikwWa24DICA&ved=0CCkQ2A4oBA">大尺寸</a></span></div></div>";
Patternp=Pattern.compile("href="(.*?)"");
Matcherm=p.matcher(content);
while(m.find()){
System.out.println(m.group(1));
}
}
G. 如何用正则表达式找出字符串中的双引号,并且将所有的双引号替换为单引号(使用java)
\"{2}这个貌似就可以找出双引号,然后你再用java中的字符串替换函数来替换就可以了。
H. "12345" "27462" java正则表达式如何匹配双引号引起来的5位数字,完全匹配。求大神
packagecn.test;
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
publicclassTest{
publicstaticvoidorFind(StringregexString){
Patternpattern=Pattern.compile("“\d{5}”");
Matchermatcher=pattern.matcher(regexString);
Stringtemp="";
while(matcher.find()){
temp=matcher.group().replaceAll("“","").replaceAll("”","");
System.out.println(temp);
}
}
publicstaticvoidmain(String[]args){
StringregexString="nfwenlwkngkwleknkwk"12345"nlkknflkwenfk"43678"“12345”wefnw0-0-0";
Patternpattern=Pattern.compile(""\d{5}"");
Matchermatcher=pattern.matcher(regexString);
Stringtemp="";
while(matcher.find()){
temp=matcher.group().replaceAll(""","");
System.out.println(temp);
}
orFind(regexString);
}
}
//不多说什么,运行结果说话;记得java的字符串中用到双引号“”要用"转义的