fumi_ogino4104
@fumi_ogino4104

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

数字の正規表現

解決したいこと

正規表現の数字の表現について
例)
R言語を使用しています。

正規表現を用いて数字を表す表現として[0-9]を使用して実施していました。
今回、WEBページを検索すると正規表現の数字のメタ文字として\dを見つけました。

この表現を使用して、スクリプトを実行するとエラーが発生します。

どなたか、なぜエラーが発生するか教えていただけませんか?
よろしくお願いいたします。

発生している問題・エラー

エラー: '\d' is an unrecognized escape in character string (<input>:2:36)

例)

NameError (uninitialized constant World)

または、問題・エラーが起きている画像をここにドラッグアンドドロップ

該当するソースコード

# エラーのおこったスクリプト
folder01 <- list.files(here("00_測定データ/学校PJ/1_浮遊粒子/row_data/1005_高野台"),
                       pattern = "[\d]*")

# エラーのおこらなかったスクリプト
folder01 <- list.files(here("00_測定データ/学校PJ/1_浮遊粒子/row_data/1005_高野台"),
                       pattern = "[0-9]*")

自分で試したこと

上記コードは、指定フォルダ内の数字のみで構成される名前のフォルダをリスト化するスクリプトです。

0

2Answer

pattern = "[0-9]*"

*は0個以上という意味で、数字が無くてもヒットしてしまうので削除しましょう。

pattern = "[0-9]"

pattern = "[\d]*"

\dは文字クラスに入れてしまうと意味が変わってしまいます。
また、\自体もエスケープする必要があり、*は余分ですので、

pattern = "\\d"

としてください。

5Like

Comments

  1. @fumi_ogino4104

    Questioner

    正規表現は、慣れていない物で*の使い方も教えていただきありがとうございました。
    今回は、数字だけのフォルダのみだったので気付きませんでした。
    *`を削除してもおっしゃるとおり、数字だけのフォルダをひっとさせることができました。
    たすかりました。

「\」は文字列の中のエスケープ文字として扱われてしまっているので、フォルダパス等と同様\\dと書く必要があります。
正規表現エラーあるあるですね…。

1Like

Comments

  1. @fumi_ogino4104

    Questioner

    早速の回答ありがとうございました。
    正規表現には慣れておらず、こんな質問にもお答えいただきありがとうございます。
    大変参考になりました。

  2. 解決したのであれば、質問をクローズするといいですよ。

  3. @fumi_ogino4104

    Questioner

    アドバイスありがとうございました。
    クローズをすることを知りませんでしたので助かりました。

Your answer might help someone💌