以下の例では、str1がstr2と等しいすべてのケース、つまりstr1 eq str2を無視しようとしています。私が直面している問題は以下の通りです。Perlは文字列/浮動小数点数から切り捨てゼロを削除します
CASE1: STR1 = {V1 0.85} 'STR2 = {V1 0.850000}'
ケース2: STR1 = {V1 0.65} {オフV2} {V_3 1.1} 'STR2 = '{V1 0.650000} {オフV2} {V_3 1.100000}'
CASE3: STR1 = {V2 0.0} {V3 2.0} {V4 ON} 'STR2 = {V2 0.0000000} {V3 2.000000} { V4 ON} '
上記の各例は、末尾の0を削除する場合はstr1 = str2の条件を満たす必要があります文字列
$str2 =~ s/\.?0*}/\}/;
しかし、それはいくつかのケースでのみ動作します:
は現在、これは私が使用しています正規表現です。その上ケース2 例1におけるゼロ{}はなく前に、すなわち
設定2除去: 0009である '{v_0p65 0.65} {vout_offオフ} {v_1p1 1.1}'
後用いた正規表現である「{v_0p65 0.65} {vout_offオフ} {1.100000 v_1p1}」
コードは以下のようなものである(一つの小さなスニペットを貼り付けることは複雑すぎる): STR1及びSTR2が受信される2つのハッシュの正確な出力であります反復的に コードは単純に
です英語でif ($str1 eq $str2) {
#Don't do anything
else {
print ("str1 and str2 are not equal\n");
}
使用している実際のコードを含めることはできますか? –
ちょうど追加..いくつかの入力ファイルを必要とする非常に複雑なコード。しかし、この部分ではまさに上のようなものです。だから私が必要とするのは、str2をstr1に変換するための正規表現です。 – Rancho
あなたの_actual_コードを投稿しないと、_actual_解決法を与えることはできません。現在、 '$ str1 =' $ str2'と等しい場合、 'if'文のデモコードは純粋に一致し、それ以外の場合は何も行いません。 ($ str1 eq $ str2){print ...; ' –