3

検索と置換で ST2 の正規表現機能を使用しようとしていますが、おそらく非キャプチャ グループを作成する方法がわかりません。この例では、「DEAN」の後に「UMBER」が続かないインスタンスを見つけたい、つまり「DEANCARE」と「DEANNUMBER」を区別したい

私が過去に読んで使用したことから、非キャプチャの構文は次のようになります。

DEAN(?:UMBER)

これは "DEANCARE" と一致する必要がありますが、"DEANNUMBER" とは一致しません。しかし代わりに、Sublime Textは、私が入力したかのように「DEANUMBER」しか見つけられません。

DEAN(UMBER)

不要な文字の最初 (またはそれぞれ) に角括弧を使用すると機能します。

DEAN[^U] 

しかし、他の目的とは対照的に、グループの不一致を使用し、個々の文字を明示的に不一致にする必要がないようにしたいと思います。ST2 の正規表現がどのように機能するかについて、構文の間違い、または概念的なエラーがありますか?

4

1 に答える 1

8

非キャプチャ グループは、後方参照で正規表現の一致部分をキャプチャしないことを除いて、グループと同じです。

DEAN(?:UMBER)文字列に正規表現を使用する場合はDEANUMBER一致しますが\1、グループが非キャプチャであるため、たとえば検索と置換を参照しても何も得られません。

DEAN(UMBER)一方、を使用すると、最初の (キャプチャする) グループの一致が によって後方参照されているため、検索と置換をmade of L\1行うことができます。もちろん、これは非常に無意味な例です。グループと後方参照について詳しく知りたい場合は、これまたはこの問題に関する他のドキュメント/チュートリアルを読むことをお勧めします。made of LUMBER\1

コメントで示唆されているように、必要なのは否定的な先読みです。

于 2013-05-13T14:54:04.740 に答える