2015-09-16 7 views
5

正規表現のパターンと一致する文字列の一部を置き換えたい。文字列を素早くregexに置き換えよう

私は、次の正規表現パターンがあります。

(.+?)@test\.(.+?) 

をそして、これは文字列置換パターンです:私はスウィフトコード内でそれらを使用することができますどのように

[email protected]\.$2 

答えて

6

Swiftでは、stringByReplacingMatchesInStringを正規表現に置き換えることができます。 @または空白

  • @以外の1つの以上の文字にマッチする - 私は

    • ([^@\\s]+)に正規表現を変更し

      let txt = "[email protected]" 
      let regex = NSRegularExpression(pattern: "([^@\\s]+)@test\\.(\\w+)", options:nil, error: nil) 
      let newString = regex!.stringByReplacingMatchesInString(txt, options: nil, range: NSMakeRange(0, count(txt)), withTemplate: "[email protected]$2") 
      println(newString) 
      

      注:ここでは

      はそれを使用する方法を示すスニペットです - @と完全に一致します。
    • test\\.(\\w+) -と一致します。文字通り、次に1文字以上の英数字(\w+)。

    置換文字列では、ピリオドをエスケープする必要はありません。

  • +1

    ありがとうございます! @stribizhev – naohide

    +0

    私は閉包を取るRegExの置換メソッドを書いた:http://eon.codes/blog/2017/08/03/regex-replace-with-closure/ – eonist

    +0

    @GitSync私は現在の問題が必要とは思わないクロージャが有効な正規表現で解決されます。それでも、それは他人に助けになるかもしれない、確かに。 –

    関連する問題