java replace 正则表达式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java replace 正则表达式相关的知识,希望对你有一定的参考价值。

有一个很长的字符串:
new Date("123456789"),"aa"="000",new Date("123456789"),"aa"="000",
用replaceAll 替换,要用正则表达式替换,最终为:
“123456789”,"aa"="000",“123456789”,"aa"="000",
即把函数new Date()去掉。

  表达方式:
  replace方法并不能改变字符串本身的,只是replace方法能返回一个处理后的字符串而已,例如:
String s="hello";
System.out.println(s.replace("h","H"));
System.out.println(s);
输出结果:
Hello
hello
  srcString.replaceAll("[\\s()]","_");

\\s表示一个空白符;
[\\s()]表示 空格 左括号 或者 右括号中出现其中任何一个

replaceAll("[\\s()]","_"); 即表示用_替代字符串中出现的空格符、左括号、右括号。
参考技术A 如果没有其他括号,直接replaceAll("new Date(",""); replaceAll(")","")就ok了;
如果要考虑有其他括号的话,判断
Matcher m = Pattern.compile("new Date\\(\"\\d*\"\\)").matcher(str);
while(m.find())
int s = m.start();
int e = m.end();
//获取到了所在首尾位置在对这段字符串进行处理就行了


这样就OK了~~追问

没有其它括号了,但是想用正则表达式

追答

正则表达式我不是给了么。。Pattern.compile("new Date\\(\"\\d*\"\\)")
这就是匹配new Date("3123212...")的,或者改成
compile(".*new Date\\(\"\\d*\"\\).*")

就可以匹配包含这个字符串的情况

没有括号就直接用replaceAll("new Date(",""); replaceAll(")","")就OK啊

参考技术B srcString.replaceAll("[\s()]","_");

\s表示一个空白符;
[\s()]表示 空格 左括号 或者 右括号中出现其中任何一个

replaceAll("[\s()]","_"); 即表示用_替代字符串中出现的空格符、左括号、右括号。
请采纳答案,支持我一下。追问

replaceAll("new Date[\\s()]", "");
后面的)还是存在啊。

参考技术C replaceAll("new Date\\((.*?)\\)", "$1");本回答被提问者采纳 参考技术D 如果你是上面的数据无需正则直接replace就完了撒
replace("new Date\(","");
replace("\)","");追问

要用正则

正则表达式的replace不起作用?

我的字符串的:('C01/2015-1$','C01/2015-1$')

然后给他replace(/$/g,"#"); 想要把¥转换成#

可是结果是('C01/2015-1$','C01/2015-1$')#

这是为什么呢、要怎么转换呢

参考技术A 你想转¥,但你replace的是$
$在正则表达式里表示的是字符串的结尾,所以结果是('C01/2015-1$','C01/2015-1$')#,因为你把字符串结尾替换成#了
正确的应该是replace(/¥g,"#");
参考技术B $在正则表达式里表示字符串的结尾,前面加一个反斜杠\$就可以表示原字符。本回答被提问者采纳 参考技术C str_replace("要替换的字符","要替换成的字符","字符串")
比如:str_replace("b","d","bb"返回dd

以上是关于java replace 正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式的replace不起作用?

java 使用正则表达式replace(redEx,replaceStr) 中遇到的问题

Java字符串替换所有正则表达式

PHP正则表达式

java replaceAll 正则表达式的用法

js正则表达式