使用している言語がわからないと、構文が正しいかどうかわかりません。
これは、誤検知がほとんどないすべてのグループと一致する必要があります。
/\(?([0-9]{3})\)?([ .-]?)([0-9]{3})\2([0-9]{4})/
試合後に関心のあるグループは、グループ1、3、および4です。グループ2は、最初と2番目の区切り文字、、、またはが同じであることを確認するためにのみ存在
し.
ます-
。
たとえば、文字を削除して電話番号を123456789の形式のままにするsedコマンド:
sed "s/(\{0,1\}\([0-9]\{3\}\))\{0,1\}\([ .-]\{0,1\}\)\([0-9]\{3\}\)\2\([0-9]\{4\}\)/\1\3\4/"
これが私の表現の誤検知です:
- (123)456789
- (123456789
- (123 456 789
- (123.456.789
- (123-456-789
- 123)456789
- 123)456 789
- 123).456.789
- 123)-456-789
式を2つの部分に分割します。1つは括弧と一致し、もう1つは最初の部分を除いて、これらの誤検知をすべて排除しません。
/\(([0-9]{3})\)([ .-]?)([0-9]{3})\2([0-9]{4})|([0-9]{3})([ .-]?)([0-9]{3})\5([0-9]{4})/
この場合、グループ1、3、および4または5、7、および8が重要になります。