🌸 「なでしこ」
>
🍯 「貯蔵庫」
ワイルドカードと正規表現抽出のプラグイン
🌟新規
📒一覧
🔌
🔍検索
🚪ログイン
ワイルドカードと正規表現抽出のプラグイン 📖
ワイルドカードマッチ系の命令と「正規表現抽出」命令を追加します
プログラム:
(→大)
!インデント構文 //2025/10/03 なでしこ3.7.8で動作確認 /* 以下の命令が含まれます ●正規表現抽出(SをWで) ●ワイルドカードマッチ(Sが|Sを,Wに|Wで) ●ワイルドカード一致(SがWに) ●ワイルドカード置換(SのWをBに) ●ワイルドカード単置換(SのWをBに) ●ワイルドカード区切る(SをWで) ●ワイルドカード抽出(SをWで) ●表ワイルドカードピックアップ(AのBからWを) */ /* ・ワイルドカード命令について *#?./ の記号がワイルドカード仕様になります その他の記号([]^$+など)は正規表現と同じ \はエスケープ記号 引数Wに使用できる特殊記号(ワイルドカード系) * 任意の0文字以上の文字列(*.txt など) # 任意の数字1字(〒###-#### など) ? 任意の1文字 記号そのままの文字になる記号 . (正規表現では任意の1文字) / (正規表現ではパターンの前後におく記号) 内部では上記の記号を正規表現に置換して実行しています ワイルドカード→正規表現 ? → . # → \d * → .* . → \. / → \/ */ #----------------------------------------------------------------------- //文字列Sを正規表現Wで正規表現マッチし、すべてのキャプチャグループ( )内を一次元配列で返し、抽出文字列に二次元配列を返す ●正規表現抽出(SをWで|Sから) 変数 結果1=[] //戻り値 変数 結果2=[] //抽出文字列として戻す Sを「/{W}/g」で正規表現マッチ 反復 対象を「/{W}/」で正規表現マッチ もし抽出文字列の要素数が1以上ならば 結果1=結果1に抽出文字列を配列足す 抽出文字列を配列複製 結果2にそれを配列追加 抽出文字列 = 結果2 結果1を戻す // 正規表現オプション gスイッチについてメモ // (オン時)文字列に複数回ヒットして配列で返す。抽出文字列は空になる // (オフ時)文字列に1回だけヒットする。抽出文字列に( )の中身を返す #----------------------------------------------------------------------- //ワイルドカード文字列を正規表現に変換する。 ?#*/. ワイルドカード正規表現変換 = 関数 (W) 変数 t = "" 変数 esc = "" 変数 戻値 = "" //ワイルドカード → 正規表現 Wを文字列分解して反復 t=esc&対象 esc="" tで条件分岐 「\」ならば//エスケープ \\,\t,\n,\?,\#,\*,\[,\] esc=「\」 続ける 「?」ならば 戻値=戻値に「.」を追加 「#」ならば 戻値=戻値に「\d」を追加 「*」ならば 戻値=戻値に「.*」を追加 「.」ならば 戻値=戻値に「\.」を追加//正規表現では特殊文字 「/」ならば 戻値=戻値に「\/」を追加//正規表現では特殊文字 違えば 戻値=戻値にtを追加 戻値=戻値にescを追加 戻値を戻す ●ワイルドカードマッチ(Sが|Sを,Wに|Wで) W=ワイルドカード正規表現変換(W) Sが「/{W}/」に正規表現マッチ ●ワイルドカード一致(SがWに) W=ワイルドカード正規表現変換(W) Sが「/{W}/」に正規表現マッチ Sがそれと一致 ●ワイルドカード置換(SのWをBに) W=ワイルドカード正規表現変換(W) 正規表現置換(S,「/{W}/g」,B) ●ワイルドカード単置換(SのWをBに) W=ワイルドカード正規表現変換(W) 正規表現置換(S,「/{W}/」,B) ●ワイルドカード区切る(SをWで) W=ワイルドカード正規表現変換(W) 正規表現区切(S,W) ●ワイルドカード抽出(SをWで|Sから) W=ワイルドカード正規表現変換(W) 正規表現抽出(S,W) ●表ワイルドカードピックアップ(AのBからWを) W=ワイルドカード正規表現変換(W) 表正規表現ピックアップ(A,B,W) #----------------------------------------------------------------------- もしプラグイン名が「メイン」ならば //「正規表現抽出」について //文字列Sを正規表現Wで正規表現マッチし、( )内にあたるものを一次元配列で返します。 //変数「それ」に(カッコの数 × ヒット数)の要素数が返ります //変数「抽出文字列」には二次元配列を返します ??「---正規表現抽出の結果---」 「しんかんせん」を「(.)ん」で正規表現抽出 ??それ //→ ["し","か","せ"] //1カッコ・3ヒットなので3要素返ります。 「2025/10/01」を「(\d+)/(\d+)/(\d+)」で正規表現抽出 ??それ //→ ["2025","10","01"] //3カッコ・1ヒットなので3要素返ります。 ??抽出文字列 //→ [["2025","10","01"]] //抽出文字列には二次元配列を返します。 「2025/10/01~2025/10/31」を「(\d+)/(\d+)/(\d+)」で正規表現抽出 ??それ // →["2025","10","01","2025","10","31"] //3カッコ・2ヒットなので6要素返ります。 ??抽出文字列 //→ [["2025","10","01"],["2025","10","31"]] //抽出文字列には二次元配列を返します。 //マッチしない場合や、( )がない場合、空配列が返ります 「2025/10/01」を「(.)ん」で正規表現抽出 ??それ // →[] ??抽出文字列 // →[] //正規表現のオプションスイッチ「/もじれつ/gms」の書式には対応しておりません。どうしよう。 #----------------------------------------------------------------------- もしプラグイン名が「メイン」ならば //ワイルドカード命令 //「*」はすべての文字列にマッチ、「?」は任意の1文字にマッチ、「.」は「.」にマッチ、「#」は数字にマッチ ??「---ここからワイルドカードの結果---」 ??「hogehoge」を「ge*」でワイルドカードマッチ //→gehoge ??「hoge.txt」が「*.txt」にワイルドカード一致 //→true ??「2025/10/01」の「(####)/(##)/(##)」を「$1年$2月$3日」にワイルドカード置換 //→2025年10月01日 ??「1.朝 2.昼 3.夜」を「#.」でワイルドカード区切る //→ ["","朝 ","昼 ","夜"] ??「2025/10/01~2025/10/31」を「(#+)/(#+)/(#+)」でワイルドカード抽出 //→["2025","10","01","2025","10","31"] ??抽出文字列 //→[["2025","10","01"],["2025","10","31"]] 「まぐろ,200円{改行}さば,150円{改行}うに,時価」をCSV取得 それの1列から「*円」を表ワイルドカードピックアップ ??それ //→ [["まぐろ","200円"],["さば","150円"]]
プログラムを実行
⭐ TKI 作
タイトル:
ワイルドカードと正規表現抽出のプラグイン
ライセンス:
CC0 (著作権破棄)
タイプ:
wnako
タグ:
ワイルドカード
,
正規表現
利用バージョン:
3.7.8
作成日時:
2025/10/03 20:52
公開の投稿
ログイン
して★を付けよう!
📝作品を編集
作品公開情報
📍この作品のURL:
📍アプリ(即時実行)のURL:
📍アプリ(実行ボタンあり)のURL:
📍ブログパーツ:
上記HTML↑をブログに貼り付けることでアプリを埋め込めます。
📍ライブラリ直リンク - 『!「***」を取込』で使うとき:
📍なでしこハブ (最新版の反映は1日後):
ソースの確認
編集履歴の確認
通報数:
0
通報って何?