27

正確に 3 桁に一致する正規表現を Emacs で作成したいと考えています。たとえば、次のように一致させたいとします。

123
345
789

だがしかし

1234
12
12 23

使用する[0-9]+と、任意の単一の数字列に一致します。うまくいくと思い[0-9]{3}ましたが、リビルダーでテストすると、何にも一致しません。

4

7 に答える 7

49

正規表現をインタラクティブに入力し、 を使用したい場合は{3}、バックスラッシュを使用して中かっこをエスケープする必要があります。数字の長い文字列のどの部分も一致させたくない場合は、 を使用\bして数字の周囲の単語境界を一致させます。これは次のとおりです。

\b[0-9]\{3\}\b

の詳細については、次のドキュメント\bを参照してください。

空文字列に一致しますが、単語の先頭または末尾にのみ一致します。したがって、別の単語として \bfoo\b 出現するすべての に一致します。一致するか、別の単語として。 次のテキストに関係なく、バッファの先頭または末尾に一致します。foo\bballs?\bballballs\b

elisp コードからこの正規表現を使用したい場合は、いつものように、もう一度バックスラッシュをエスケープする必要があります。例えば:

(highlight-regexp "\\b[0-9]\\{3\\}\\b")
于 2008-09-16T05:33:38.347 に答える
10

[0-9][0-9][0-9][0-9]{3}または\d{3}「1234」にも一致するため機能しません。

したがって、区切り文字が何であるかによって異なります。

変数にある場合は、実行できます^/[0-9]{3}/$。空白で区切られている場合は、次のことができます\w+[0-9]{3}\w+

于 2008-09-16T05:35:40.307 に答える
4

これを使用する必要があります:

"^\d{3}$"
于 2008-09-16T05:41:41.447 に答える
3

他の人が指摘しているように、3桁以上の数字を一致させる必要があります。数字の前には、行頭または数字ではないものが必要です。emacsが\Dをサポートしている場合は、それを使用してください。それ以外の場合は、セット[^0-9]を使用します。

一言で言えば:

(^|\D)\d{3}(\D|$)
于 2008-09-16T05:44:50.613 に答える
2

Emacs で正規表現を試してみると、 regex-toolが非常に便利であることがわかりました。

ftp://ftp.newartisans.com/pub/emacs/regex-tool.el

回答ではありません (質問は既に回答されています)。一般的なヒントです。

于 2008-09-16T22:38:18.633 に答える
0

[0-9][0-9][0-9] は最低3 つの数字に一致するため、Joe が述べたように、(少なくとも) \b または数字を区切るその他のものを含める必要があります。おそらく最も確実な方法は次のとおりです。

[^0-9][0-9][0-9][0-9][^0-9]

于 2008-09-16T05:36:10.260 に答える
-3

それはとても簡単です:

[0-9][0-9][0-9]
于 2008-09-16T05:27:20.810 に答える