Java代码弱点与修复之——Unintended regular expression(非期望的正则表达式)

弱点描述

该类型弱点通过Coverity扫描报出的错误信息如下:

Unintended regular expression (REGEX_CONFUSION)
The string manipulation will return incorrect results for some inputs.

上面的提示信息翻译的意思是: 意外的正则表达式(正则表达式混淆)
附带某些输入的字符串操作返回了不正确的结果。

简单的说: 就是正则表达式的使用方式错误。

示例代码

看一个上面错误的示例代码:

 	public void regexConfusion() {
		String s = "D:/temp/../dd";
		s = s.replaceAll("..", "-");
		System.out.println(s); //------d
	}

上面代码使用正则表达式替换, 本来的意思是将字符中的两个点号(.. )替换为横线 (-)。
也就是说将 D:/temp/../dd 替换为 D:/temp/-/dd

但是, . 是正则表达式的通配符,可代表任意的一个字符, 两个 . 就是任意的两个字符,所以, 上面代码的实际效果就是将字符串中的任意两个字符替换为 -, 因为上面的字符数量是奇数,除了最后一个字符之外, 其余的没两个字符都被替换为

猜你喜欢

转载自blog.csdn.net/oscar999/article/details/130774025