2016-10-17 8 views
0

誰かが私に説明してもらえますか?stringrパッケージ(ver 1.1.0)のstr_detectが3つのコードのそれぞれについてTRUEを返すのはなぜですか?stringr(R)の予期しない正規表現の結果

str_detect("01", "^[0]*[1-9]*[0]+") 
str_detect("01", "^0*[1-9]*0+") 
str_detect("01", "^0*[1-9]*0") 

最初にゼロを探し、その後に少なくとも1つの非ゼロの数字があり、その後に文字列がゼロであることが必要でした。それは1

私は足りない何かの後に0を持っていないよう

明らかに「01」の文字列を修飾することはできませんか?私が探しているものはパターンが間違っていますか?

ありがとうございました!先頭の0以来

答えて

0

私はあなたが以下のパターンをしたいと考えている:

^0[1-9]+0 

は、完全なパターンの説明についてはhttps://regex101.com/r/v9cwHJ/1を参照してください。
あなたの具体的なエラーは、最初の0に*を使用していました。
また、2番目の数字に+を使用すると、少なくとも1が見つかります。

2

はあなたのパターンでoptionnalあり、それらは無視され、末尾のゼロは文字列で0を検出している...

文字列の末尾を指定するには、$を使用します。

str_detect("01", "^[0]*[1-9]*[0]+$") 
str_detect("01", "^0*[1-9]*0+$") 
str_detect("01", "^0*[1-9]*0$") 
関連する問題