43

Notepad ++を使用して、5453行の言語ファイルでテキストを置換しています。ファイルの行の形式は次のとおりです。

variable.name = Variable Value Over Here, that''s for sure, Really

二重アポストロフィは意図的なものです。

値を文の大文字小文字に変換する必要があります。ただし、「Here」と「Really」という単語は適切であり、大文字のままにする必要があります。ご覧のとおり、値内の大文字と小文字は通常、最初から混合されています。

私はしばらくの間これに取り組んできました。私がこれまでに持っているのは:

 (. )([A-Z])(.+)

少なくとも適切な文字列を選択しているようです。交換部品は私が苦労しているところです。

4

4 に答える 4

162
Find:    (. )([A-Z])(.+)
Replace: \1\U\2\L\3

Notepad ++ 6.0以降(PCREサポートが組み込まれています)。

于 2013-05-30T07:28:15.980 に答える
12

正規表現の置換では、一致に対して機能(大文字化など)を実行できません。たとえば、PHPやJavaScriptでスクリプトを作成する必要があります。

更新:Jonasの回答を参照してください。

私は、そのようなことを行うために、TextUtilitiesというWebページを自分で作成しました。

  • テキストを貼り付けます
  • 「検索、正規表現、置換」に移動します(またはCtrl+ Shift+を押しFます)
  • 正規表現を入力してください(私のものは^(.*?\=\s*\w)(.*)$
  • 「^$マッチライン制限」オプションをチェックしてください
  • 「JS関数を一致に適用する」を選択します
  • ここに引数を追加します(最初は一致、次にサブパターン)。s, start, rest
  • returnステートメントをに変更しますreturn start + rest.toLowerCase();

テキスト領域の最後の関数は次のようになります。

return function (s, start, rest) {
     return start + rest.toLowerCase();
};

「Really」や「Here」などの単語を大文字にするコードを追加するかもしれません。

于 2009-06-24T15:55:23.523 に答える
5

Notepad ++では、PythonScriptと呼ばれるプラグインを使用して作業を行うことができます。プラグインをインストールする場合は、次のような新しいスクリプトを作成します。

ここに画像の説明を入力してください

次に、次のスクリプトを使用して、適切と思われる正規表現と関数変数を置き換えます。

import re

#change these
regex = r"[a-z]+sym"
function = str.upper

def perLine(line, num, total):
for match in re.finditer(regex, line):
    if match:
        s, e = match.start(), match.end()
        line = line[:s] + function(line[s:e]) + line[e:]
        editor.replaceWholeLine(num, line)

editor.forEachLine(perLine)

この特定の例は、特定の行のすべての一致を検索し、各一致ごとに関数を適用することで機能します。複数行のサポートが必要な場合は、Pythonスクリプト「Conext-Help」で、「editor」オブジェクトで定義されたpymlsearch/pymlreplace関数を含む提供されるすべての関数について説明しています。

スクリプトを実行する準備ができたら、最初にスクリプトを実行するファイルに移動し、次にPythonスクリプトメニューの[スクリプト]>に移動してスクリプトを実行します。

注:混乱した場合は、おそらくnotepad ++の元に戻す機能を使用できますが、最初にテキストを別のファイルに入れて、機能することを確認することをお勧めします。

PS notepad ++の組み込みの検索ダイアログを使用して、正規表現のすべての出現箇所を「検索」および「マーク」できます。それらをすべて選択できれば、この特定の問題に対してTextFXの「文字->大文字」機能を使用できますが、私はマークされたテキストまたは見つかったテキストから選択されたテキストに移動する方法がわかりません。しかし、誰かがそうする場合に備えて、私はこれを投稿すると思いました...

編集: Notepad ++ 6.0以降では、「PCRE(Perl互換正規表現)検索/置換」を使用できます(ソース:http ://sourceforge.net/apps/mediawiki/notepad-plus/?title = Regular_Expressions ) 。のよう(. )([A-z])(.+)な置換引数を持つのような正規表現を使用して解決されました\1\U\2\3

于 2013-02-19T20:51:42.170 に答える
4

質問者は非常に具体的なケースを念頭に置いていました。notepad ++の一般的な「文の場合への変更」として、最初の正規表現の提案は私にとって適切に機能しませんでした。完璧ではありませんが、これは私の目的のためにオリジナルを大幅に改善した微調整バージョンです:

find:    ([\.\r\n][ ]*)([A-Za-z\r])([^\.^\r^\n]+) 
replace: \1\U\2\L\3

小文字の名詞、名前、日付、国などにはまだ問題がありますが、優れたスペルチェッカーがそれを助けることができます。

于 2015-01-31T01:43:29.237 に答える