2016-08-12 8 views
2

でアクセントのないもので、複数のアクセント付き文字を置き換え、それは次のようになります。その非アクセント同等物のためのサブライムテキストは私がテキストファイル内のアクセントですべての文字を置換する必要があり、一度

á é í ó ú ñ 

a e i o u n 

ファイル全体のregexコマンドを使ってこれを一度に行うことはできますか?


更新(2月1日、2017)

私はKeith Hallgreat answerを取り、崇高パッケージになりました。あなたはここにそれを見つけることができます:Remove​Non​Ascii​Chars。発音区別記号付きの文字を見つけるために

(?=\p{L})[^a-zA-Z] 

+0

がわかりません正規表現ですが、個人的には、ファイルが何であってもUnicodeサポートを保証します。 – Xufox

+0

それは私には悲しいことではありません。ユニコードのサポートはないので、なぜアクセントで文字を置き換える必要があります。 – Gabriel

答えて

6

はあなたのような正規表現を使用することができます。次の文字を確実にする

  • (?=\p{L})肯定先読みは、発音区別符号なし文字を除外するためのUnicode文字
  • [^a-zA-Z]否定文字クラスです。

崇高テキスト(より具体的にか、検索と置換のためにそれを使用していますBoost regex engine)が\p{M}をサポートしていないので、これが必要です。 \pメタキャラクターの詳細については、http://www.regular-expressions.info/unicode.htmlを参照してください。


置き換えの場合、残念ながら手動で置き換える文字を指定する必要があります。難しくするために、STはPOSIX character equivalentsをサポートしていないようでも、conditionals in the replacementもサポートしていないため、キャプチャ・グループを使用して1回のパスで検索と置換を行うことができます。

a 
と交換

[ÀÁÂÃÄÅ] 

A 

[àáâãäå] 

と交換してください:

したがって、次のような複数見つけるの式が使用する必要があります

など

多くの手作業です。


Aはるかに簡単/迅速/以下、手動作業のアプローチではなく、正規表現のPythonのAPIを使用することです:

  1. ツール]メニュー - >開発 - >新しいプラグイン
  2. 貼り付けそれ保存

    import sublime 
    import sublime_plugin 
    import unicodedata 
    
    class RemoveNonAsciiCharsCommand(sublime_plugin.TextCommand): 
        def run(self, edit): 
         entire_view = sublime.Region(0, self.view.size()) 
         ascii_only = unicodedata.normalize('NFKD', self.view.substr(entire_view)).encode('ascii', 'ignore').decode('utf-8') 
         self.view.replace(edit, entire_view, ascii_only) 
    
  3. を(あなたのPackages/Userフォルダになります)STが推奨するフォルダ内に、ように、次の中remove_non_ascii_chars.pyようmething(ファイル拡張子は重要であり、ベース名ではない)

  4. [表示]メニュー - >ショーコンソール
  5. view.run_command('remove_non_ascii_chars')でタイプ/ペーストとを押すと、発音区別符号は(文字を削除されています
  6. を入力します。アクセント付きのものはアクセントのないものに変換されます)。

注:上記は実際にも同様に、すべての非ASCII文字を削除します...

さらに読書:およそ

+0

偉大な答えキース、ありがとう! – Gabriel

関連する問題