您当前的位置:首页 > 互联网教程

java replaceAll 正则表达式的用法

发布时间:2025-05-24 13:56:04    发布人:远客网络

java replaceAll 正则表达式的用法

一、java replaceAll 正则表达式的用法

1、在Java编程中,replaceAll方法与正则表达式结合使用,可以方便地替换字符串中的特定模式。例如,我们有一个字符串s,其中包含格式为"121091074_内容.jpg"的文件名。我们希望将这些文件名替换为"121091074_内容ln.jpg"的格式。

2、s.replaceAll("121091074_(.*)[.]jpg","121091074_$1ln.jpg");

3、这里,正则表达式"121091074_(.*)[.]jpg"用于匹配目标字符串。其中:

4、121091074_:匹配固定的字符串。

5、.*:匹配任意字符(除了换行符)零次或多次。

6、替换字符串"121091074_$1ln.jpg"中,$1表示正则表达式中第一个括号内的匹配内容。因此,最终结果将保持121091074_不变,替换内容为括号内匹配的文本,并添加"ln"和".jpg"。

7、通过这种方法,我们可以轻松地对字符串进行复杂的替换操作。例如,如果我们希望将所有.jpg文件名替换为.jpgl,并在文件名中添加"ln",可以使用类似的代码:

8、s.replaceAll("\\.jpg",".jpgl");

9、这将替换所有以".jpg"结尾的字符串。

10、正则表达式提供了强大的功能,适用于各种字符串处理任务。熟练掌握这些工具,可以大大提高我们的编程效率和代码质量。

二、正则表达式“或“的使用

正则表达式,又称规则表达式。是计算机科学的一个概念。

正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。

正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。

检查字符串是否符合正则表达式中的规则,有一次不匹配,则返回false。如:

String reg="[a-zA-Z]\\d?";//次表达式表示字符串的第一位只能是字母,第二位只能是数字或没有boolean flag=str.matches(reg);//返回结果为true。

所谓切割,即是按一定的规则将字符串分割成多个子字符串,如:

String str="zhangsan,lishi,wangwu"。

String reg=",";//表示以逗号作为切割符。

String[] arr=str.split(reg);//返回结果为{“zhangsan”,"lisi","wangwu}。

即将字符串中符合规则的字符替换成指定字符,如:

String str="sfhjhfh136hjasdf73466247fsjha8437482jfjsfh746376"。

str.replaceAll("\\d{3,}","#");//表示将连续出现三个或三个以上的数字替换成“#”。

参考资料来源:百度百科-正则表达式

三、JAVA中string.replace和string.replaceAll的区别及用法

1、JAVA中string.replace()和string.replaceAll()的区别及用法乍一看,字面上理解好像replace只替换第一个出现的字符(受javascript的影响),replaceall替换所有的字符,其实大不然,只是替换的用途不一样。

2、public String replace(char oldChar,char newChar)

3、返回一个新的字符串,它是通过用 newChar替换此字符串中出现的所有 oldChar而生成的。如果 oldChar在此 String对象表示的字符序列中没有出现,则返回对此 String对象的引用。否则,创建一个新的 String对象,用来表示与此 String对象表示的字符序列相等的字符序列,除了每个出现的 oldChar都被一个 newChar替换之外。

4、public String replaceAll(String regex,String replacement)使用给定的 replacement字符串替换此字符串匹配给定的正则表达式的每个子字符串。此方法调用的 str.replaceAll(regex, repl)形式产生与以下表达式完全相同的结果:

5、Pattern.compile(regex).matcher(str).replaceAll(repl)

6、regex-用来匹配此字符串的正则表达式

7、抛出: PatternSyntaxException-如果正则表达式的语法无效。

8、Stringx="[kllkklk\\kk\\kllkk]";

要将里面的“kk”替换为++,可以使用两种方法得到相同的结果

9、要将里面的“kk”替换为++,可以使用两种方法得到相同的结果

10、replace(CharSequencetarget,CharSequencereplacement)——x.replace("kk","++")

11、replaceAll(Stringregex,Stringreplacement)——x.replaceAll("kk","++")

可见两个函数在处理上述字符串的时候没有什么区别,

12、可见两个函数在处理上述字符串的时候没有什么区别,

13、下面将字符串中的“\\”替换为“++”

14、System.out.println(x.replace("\\","++"));//没有问题

15、System.out.println(x.replaceAll("\\","++"));//报错java.util.regex.PatternSyntaxException

可见,当使用转义字符进行替换的时候,是有区别的。

16、可见,当使用转义字符进行替换的时候,是有区别的。

17、replaceAll的参数就是regex,是正则表达式。首先会转义,所以报错。

18、如果使用System.out.println(x.replaceAll("\\\\","++"));即可完成。

19、那么在使用普通的字符串替换时,选用哪一个函数呢?

20、Stringx="[kllkklk\\kk\\kllkk]";

21、//System.out.println(x.replace("[","#").replace("]","#"));

22、System.out.println(newDate().getTime());

23、System.out.println(newDate().getTime());

24、System.out.println(newDate().getTime());

测试结果:

25、根据测试replaceAll函数要更快一些。看源码发现,replace函数里面仍使用replaceAll函数。

26、当字符串无法确定是否具有转义字符时,而且也不需要转义时,建议使用replace函数