Java コードの弱点と修正 - 意図しない正規表現 (予期しない正規表現)

弱点の説明

このタイプの脆弱性に対して 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
	}

..上記のコードでは正規表現を使用して置換を行っていますが、本来は文字内の 2 つの点 ( ) を横線 ( ) に置き換えることを意味します-
つまり、 にD:/temp/../dd置き換えますD:/temp/-/dd

ただし、.これは正規表現のワイルドカード文字であり、任意の文字を表すことができ、2 は任意の 2 文字.を意味します。したがって、上記のコードの実際の効果は-、文字列内の任意の 2 文字を に置き換えることです。上記は奇数ですが、最後の文字を除き、残りの 2 文字はすべて次の文字に置き換えられます。

おすすめ

転載: blog.csdn.net/oscar999/article/details/130774025