2016-12-04 7 views
3

誰かがghciのこの相互作用がどのように可能であるか説明できますか?なぜText.Regex.Posix =〜が文字を dと一致させるのですか?

*Main Text.Regex.Posix> "d1" =~ "\\d" :: String 
"d" 
*Main Text.Regex.Posix> "d1" =~ "\\d" :: Int 
1 

私は\dが数字のために鎖化ので、私はそれが文字dではなく、文字列の文字1存在を一致させることができますどのように理解していないと思いました。

注:使用GHCiの7.10.3

+2

'\ d'はPOSIX正規表現で特別な意味を持ちません。それはちょうど 'd'と一致します。代わりに '[[:digit:]]'を試してください。 – melpomene

答えて

7

Text.Regex.Posix moduleだけC POSIXの正規表現APIをサポートしています。 POSIX正規表現構文では、数字の略語文字クラスとして\dが定義されていません。[:digit:]内で使用する必要があるPOSIX文字クラス[[:digit:]]。しかし、[0-9]を使用して通常のASCII数字と一致させる方が簡単で短くなります。

パターンに\dを使用するには、Text.Regex.PCREを使用すると便利です。

+1

ああ、これらの角かっこ!ありがとうございました。 – Aleksey

関連する問題