2016-09-01 15 views
4

捕捉されたグループを指定して、置換用語にリテラル数字を指定したいが、リテラル数字はグループ番号の一部として解釈されている。この(不自然)の例を考えるnotepad ++置換のregexグループ番号を区切る方法は?

Input text: A5 
Find: (.)(.) 
Replace: $16 
Expected result: A6 
Actual result: <blank> 

実験は$16 "は、基16" と解釈されていることを示唆しています。

は、私は私のグループ1を与えた、 6リテラルを作るために $1\6を使用してみましたが、 \6用のブランク - 結果はちょうど Aだったすなわち。 $1\\6私に A\6を与えました。

一般的な質問は、「どのようにしてグループ1に文字数を指定するのですか」です。

+0

あなたはちょうど '$ {1} 6'が必要です。 –

+0

@WiktorStribiżew私はそのためのメモ帳++のヘルプを見つけることができませんでした。回答として投稿する必要があります。 – Bohemian

答えて

5

メモ帳S & R regexはBoost regex libraryから提供されています。

曖昧さのない$nは、IDの前後の中括弧({})で後方参照が行われるため、${1}6を代わりに使用できます。

メモ帳++では、\\1,など*から9まで)で始まるBREスタイルの後方参照もサポートされています。したがって、置換パターンに\16を使用すると、エンジンは逆参照1 +リテラルシンボル6としてのみ解析します。 (.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)\11の代わりに1234567890Aに置き換えて確認できます。 A(11番目のグループ)の代わりに11が得られます。 $11の置換はAとなります。

Notepad++ helpこれらの表記に言及したが、それは詳細を欠い:

$n${n}\n
は、部分式の番号nとマッチしたものを返します。負のインデックスは譲らない。

+0

\ 16も、少なくともNP ++ 6.9.2で動作します。 –

+1

これらはBREスタイルの逆参照であり、そのような逆参照は1〜9しかサポートされていないためです。 –

+0

ヘルプページの最初の段落には、正規表現言語の詳細がリンクされています(*「実装者のウェブサイトで*」を参照)。私は、その代わりの言語へのリンクを見ることはできませんが、http://www.boost.org/doc/libs/1_48_0/libs/regex/doc/html/boost_regex/format/boost_format_syntax.htmlにあります。両方のドキュメントへのリンクはhttp://stackoverflow.com/a/16104946/546871にあります。 – AdrianHHH

関連する問題