[0-9]{3}と[0-9]の違いは何ですか?正規表現で{3}?

[0-9]{3}と[0-9]の違いは何ですか?正規表現で{3}?

ファイルがあります -

cat regex30.txt 
(914).582.3013
(873).334.2589
(521).589.3147
(625).235.3698
(895).568.2145
(745).256.3369

に変換したいです。

914.582.3013
873.334.2589
521.589.3147
625.235.3698
895.568.2145
745.256.3369

私のステップは次のとおりです。

sed -r 's/\(([0-9]<Space>{3})\)(\.[0-9]{3}\.[0-9]{4})/\1\2/g' regex30.txt 

その後、結果が得られます。

(914).582.3013
(873).334.2589
(521).589.3147
(625).235.3698
(895).568.2145
(745).256.3369

なぜこのような結果が出るのですか?スペースがあるのはなぜ重要なのか?

スペースを削除すると正常に動作します。

sed -r 's/\(([0-9]{3})\)(\.[0-9]{3}\.[0-9]{4})/\1\2/g' regex30.txt 
914.582.3013
873.334.2589
521.589.3147
625.235.3698
895.568.2145
745.256.3369

私が理解しているように、[0-9] {3}-は0から始まる3桁の数字を表します。

[0-9]{3}正規表現との違いは何ですか[0-9] {3}

空間があるというのがなぜ重要なのか、それとも同時に見られないのか。

空白を表現するために '\s'を使用したと思いました。

ベストアンサー1

免責事項:正規表現を解析していません。あなたの質問に対する答えは次のとおりです。

[0-9]{3}正確に小数点以下の3桁を表します。[0-9] {3}10進数の後に3つのスペースが続くことを示します。これは{3}(いわゆる「バンドル」と呼ばれる)先行するいわゆる「原子」を繰り返すからです。

正規表現のマニュアルページから:

$ man regex
... An atom followed by a bound containing one integer i and no comma 
matches a sequence of exactly i matches of the atom. ...

「原子」という用語は、次の段落で定義される。よく読んだ。

おすすめ記事