正規表現の「\ d」は数字を意味しますか?


147

私はそれを123\d一致しましたが、一致13ませんでした2\dどのような要件を満たす数字と一致するか疑問に思っていましたか?私はPythonスタイルの正規表現について話している。

Geditの正規表現プラグインは、Pythonスタイルの正規表現を使用しています。私はその内容が含まれているテキストファイルを作成しました

123

正規表現のみ13一致し\dます。2ではありません。

一般に、間に他の文字がない数字のシーケンスの場合、奇数桁のみが一致し、偶数桁は一致しません。たとえばでは12345、マッチがある135


4
\d一致します123。そうでない場合は、式に他の何かがあるはずです。完全な表現を見せていただけますか?
Alex Aza

4
\dはの省略形な[0-9]ので、一致するはず2です。完全なテストケース(問題を示す実行可能なスクリプト)を投稿してください。問題の原因を突き止めることができます。
zwol

@delnan:「123では\ dは1と3に一致するが2には一致しないことを発見しました」と私にはかなり具体的に聞こえます。
アンバー

@アンバー:くそー、私は見逃した!

5
わかりません。これは回答として投稿していません。理由はわかりません、geditが前の試合の終了直後に新しい試合を開始することを拒否していると思います。1文字をスキップします。 、もう一度照合する前に。マッチング11111してみてください22222
zwol

回答:


459

[0-9] 常に同じではありません\d。python3では、[0-9]一致するのは0123456789文字のみですが、その他の数字(東部アラビア数字など)と\d一致[0-9]٠١٢٣٤٥٦٧٨٩ます。


3
REPLでこれを試してみます:import re, re.match(r'\d', '٠١٢٣٤٥٦٧٨٩')一致が表示されません
nickf '18

1
@nickfはpython3で試してみてください。
2013年

2
ペルシア語とアラビア語の場合、javaおよびjavascriptエンジンでは、\ p {Nd}を使用します
Alireza Fattahi

6
+1ですが、mmmm ... OPのタグは、Python3でのみUnicodeの数字Python\d一致します。Python 2.7では、それはまだ古いASCIIです[0-9]—答えでそれを明確にする価値があるかもしれません。:)
zx81

1
@FarazAhmad、おそらくそうではない、すべての文字を個別に指定する必要がある
Kirill Polishchuk


8

Pythonスタイルの正規表現で、\d個々の数字に一致します。そのように見えないものがある場合は、特定の記号を1つだけ説明するのではなく、使用している完全な正規表現を提供してください。

>>> import re
>>> re.match(r'\d', '3')
<_sre.SRE_Match object at 0x02155B80>
>>> re.match(r'\d', '2')
<_sre.SRE_Match object at 0x02155BB8>
>>> re.match(r'\d', '1')
<_sre.SRE_Match object at 0x02155B80>

ありがとう!私の正規表現パーサーはgeditの正規表現プラグインです。コンテンツ全体は123です。
Tim


5

これは推測にすぎませんが、エディターは実際にはすべての数字に一致すると思います1 2 3—ただし、123文字列全体が一致する場合と区別するために、奇数の一致のみが強調表示されています。

ほとんどの正規表現コンソールは、異なる色で隣接する一致を強調表示しますが、プラグイン設定、端末の制限、またはその他の理由により、他のすべてのグループのみが強調表示される場合があります。


1

.NET / C#に関する情報:

10進数字文字:\ d \ dは、任意の10進数字と一致します。これは、\ p {Nd}正規表現パターンに相当します。これには、標準の10進数字0〜9と、他の多くの文字セットの10進数字が含まれます。

ECMAScript準拠の動作が指定されている場合、\ dは[0-9]と同等です。ECMAScript正規表現の詳細については、「正規表現オプション」の「ECMAScriptマッチング動作」セクションを参照してください。

情報:https : //docs.microsoft.com/en-us/dotnet/standard/base-types/character-classes-in-regular-expressions#decimal-digit-character-d

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.