- 1 名前:デフォルトの名無しさん [2017/03/15(水) 02:04:35.47 ID:e01p03UP.net]
- Regular Expressionスレです。
質問する場合は必ず実装言語や処理系ソフトウェア名を示してください。 前スレ Regular Expression(正規表現) Part13 echo.2ch.net/test/read.cgi/tech/1415149975/ 次スレは>>980宜しく 天ぷら等2以降
- 159 名前:デフォルトの名無しさん mailto:sage [2017/06/01(木) 12:16:30.24 ID:o/dQD8LP.net]
- >>154
特殊な例を一般化するのはよくない
- 160 名前:デフォルトの名無しさん mailto:sage [2017/06/01(木) 12:52:26.55 ID:YbQp1MN1.net]
- >>157
特殊? そう言うなら他にもっと使われてる用途挙げてくれ
- 161 名前:デフォルトの名無しさん mailto:sage [2017/06/01(木) 12:55:42.58 ID:uSxzswpP.net]
- 検索じゃろ
grep然りsed然りエディタの検索然り
- 162 名前:デフォルトの名無しさん mailto:sage [2017/06/01(木) 20:45:19.78 ID:YbQp1MN1.net]
- >>159
その辺りもエンドユーザー(多くは開発者だと思うけど)に近いところじゃね?
- 163 名前:デフォルトの名無しさん mailto:sage [2017/06/01(木) 21:36:20.85 ID:z/dTvzRJ.net]
- 一般に正規表現自体をどこで使うかの話と違うんか?
プログラマがどこで使うかって文脈に限定してるのんか?
- 164 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 00:26:45.39 ID:ixZw1vso.net]
- perlがそうであったようにログ読んだり整形したりするときにも良く使う。システム管理者。
プログラマによっては無理に正規表現使わないで正規表現を引数に取らないcontainとか複数行で書くって人もいるんじゃないか。入力チェックもそんな考えるような正規表現の出番少ないような。 perlくらい言語に組み込まれてるならともかく。
- 165 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 01:15:51.17 ID:ZbzhojDH.net]
- >>156
ヘンケン艦長〜!
- 166 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 14:02:59.19 ID:s9L+1vWi.net]
- 正規表現、難しいですね…全然わかりません
お知恵をおかし下さい 例えば test = "//abc"; // コメント "です" という一行があった場合、後半の // コメント "です" にだけマッチする正規表現はどのように書いたらいいんでしょうか? 最初は /(?!.*(\"|\'))\/\/(.*)/ こんなカンジで否定的先読みを利用していたのですが、 コメント部にも、 シングル及びダブルクォーテーションが入る可能性が出てきたので、 この書き方では ?! で否定しているためなのかマッチ出来ません。 何か良い書き方はありますでしょうか? やりたい事は、PHPなどで、javascriptのソースから単一行のコメントを削除したいです。 よろしくお願い致します。
- 167 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 14:24:22.46 ID:zHTMhHhl.net]
- //((?!//).)*?$
- 168 名前:デフォルトの名無しさん [2017/06/02(金) 20:31:58.40 ID:KFrvDlYH.net]
- PHP は知らん
$perl -ne 'm%((?:\".*?\"|/(?!/)|[^/])*)(.*)% ; printf("<$1> <$2>\n");' test = "//abc"; // コメント "です" <test = "//abc"; > <// コメント "です"> // コメント "です" <> <// コメント "です"> $
- 169 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 21:10:46.42 ID:yyLeCvfJ.net]
- 末尾方向から、// を探して、もしあれば、その行を選択する。
^.*\/\/(ここに、2連続以上の、/ が存在しない)$ /// 例えば、3連続でも、コメント扱いするよな? test = "///abc"; /// コメント "です" シングルクォーテーションは、どうするんだ? test = '///abc'; /// コメント "です"
- 170 名前:デフォルトの名無しさん mailto:sage [2017/06/02(金) 23:18:34.61 ID:cODXM6Ca.net]
- javascriptだから、シングルダブルは同等機能
"'"とか'"'とか有だし "\""とかのエスケープもある "//abc"は文字列だし、"\""//abc"はコメント
- 171 名前:デフォルトの名無しさん mailto:sage [2017/06/03(土) 00:22:48.22 ID:02UJhjHA.net]
- みなさん、ありがとう御座います!
165さんの短いのでサクっと出来ました! なるほど、末尾から検索をかけるとう考えなんですね。 本当に奥が深くて、使いこなすのは難しいです… いろんなパターンを作りだし、自由にマッチ出来るよう精進します >165-167さん、ありがとう御座いました!
- 172 名前:デフォルトの名無しさん mailto:sage [2017/06/03(土) 00:23:37.51 ID:02UJhjHA.net]
- >168さん抜けちゃいました(汗
ありがとう御座いました!
- 173 名前:165 mailto:sage [2017/06/03(土) 01:16:11.91 ID:janVI+9u.net]
- >>169
ツッコミか逆ギレ待ちだったんだが… 165ではコメントが無くてコード中に//がある場合にそのコードの部分にマッチする 削除だとコードを削ってしまうよ コード中に//が無い場合、またはコード中に//がある場合にその後ろにコメント行がある場合、限定 マトモなのは「JS コメント 正規表現」とかのワードでggr
- 174 名前:デフォルトの名無しさん mailto:sage [2017/06/03(土) 01:49:01.34 ID:VDeCcObx.net]
- s#((?:"(?:\\\\|\\"|[^"])*+"|'(?:\\\\|\\'|[^'])*+'|/(?!/)|[^/])*+)(.*)#<$1>\t<$2>#
- 175 名前:デフォルトの名無しさん mailto:sage [2017/06/03(土) 02:57:17.44 ID:02UJhjHA.net]
- >>171
え!? 限定的なテストで、思ったとおりの動きをしたので、おお!すげー!って思ってました… 実際のスクリプトには、まだ組み込んでないので気付きませんでした 他の方が書かれてた方法も試したり、ググってみますね
- 176 名前:デフォルトの名無しさん mailto:sage [2017/06/03(土) 04:51:38.86 ID:ZUxfcpWv.net]
- 区切り記号 ; や閉じ括弧 } のあとにスペースかタブいくつかの後に来る // から行末をコメントと見なすのが簡単?
- 177 名前:デフォルトの名無しさん mailto:sage [2017/06/03(土) 12:52:21.44 ID:7vig672V.net]
- コメント化は、プログラムデバッグ中にも命令を無効にするために使うこともあるし、ことはそう簡単じゃないよ
//if(hoge=="hoge.net") {//コメント
- 178 名前:デフォルトの名無しさん [2017/06/03(土) 14:13:52.35 ID:ep62Y9tf.net]
- これは、無限の組み合わせがあるから、正規表現じゃ無理
AST変換とか、LLVMでコンパイル後の命令木をもらって、 コメント部分を削除するとかしないと、自力じゃ無理なレベル
- 179 名前:デフォルトの名無しさん mailto:sage [2017/06/03(土) 14:17:50.88 ID:sCohk93m.net]
- うむ
- 180 名前:デフォルトの名無しさん mailto:sage [2017/06/03(土) 14:32:23.81 ID:7vig672V.net]
- こんな場合もあるからね
/* 一行コメントを外す //*/hoge="abc";
- 181 名前:デフォルトの名無しさん mailto:sage [2017/06/03(土) 14:42:13.81 ID:mWYP1opd.net]
- 文脈自由言語の領域か
- 182 名前:デフォルトの名無しさん mailto:sage [2017/06/03(土) 16:26:56.85 ID:kz1iKZuq.net]
- テキストから
06/03( を抽出する場合、どんな表現になりますか?
- 183 名前:デフォルトの名無しさん mailto:sage [2017/06/03(土) 16:32:48.16 ID:7vig672V.net]
- 何それ限定なの?
06\/03\( (スラッシュにエスケープが要らない場合もあるけど付けといてダメなことはない)
- 184 名前:デフォルトの名無しさん mailto:sage [2017/06/03(土) 20:14:19.78 ID:4NkabvDw.net]
- >>181
sedのsなんかは(をエスケープすると特別な意味を持つんじゃ
- 185 名前:デフォルトの名無しさん mailto:sage [2017/06/03(土) 22:49:00.44 ID:yEDWU2+/.net]
- 正規表現って本当に色々なパターンでテストしないと抜けがあったりするから怖いね
- 186 名前:デフォルトの名無しさん mailto:sage [2017/06/03(土) 23:15:22.50 ID:eiMrU4PF.net]
- >>183
それは仕様を理解していないから。 正規表現で表現してあるパターン以外にマッチする事はないんだから、 抜けがあるならパターンの意味を理解していないって事
- 187 名前:デフォルトの名無しさん mailto:sage [2017/06/04(日) 00:01:51.87 ID:caz8ZVsN.net]
- 理解してないのに使う方が怖い
- 188 名前:デフォルトの名無しさん mailto:sage [2017/06/04(日) 10:21:55.88 ID:ty2rLUEJ.net]
- >>184
仕様を理解してたらバグがないって? w
- 189 名前:デフォルトの名無しさん mailto:sage [2017/06/05(月) 17:11:30.09 ID:oWlVC1QB.net]
- 非欲張り、欲張り、強欲の違いが分からなかったんだけど
ttp://d.hatena.ne.jp/atzy/20110309/p1 これ読んでやっと分かった こりゃエディタの検索で試してるだけじゃ理解出来なくて当然だね 誰か同じように例を交えて先読みと戻り読みのロジックを解説して欲しい それか解説してるwebページがあるならリンク貼って下さい
- 190 名前:デフォルトの名無しさん mailto:sage [2017/06/09(金) 23:50:59.51 ID:fJoQB/gQ.net]
- ●Regular Expressionの使用環境
秀丸 HMJRE.DLL V5.00 ●検索か置換か? 置換 ●説明 文章最後の文字からEOFまでの 空白(全角半角両方) タブ 改行 を消したい。 ●対象データ AAAAA BBBBB CCCCC [EOF] ●希望する結果 AAAAA BBBBB CCCCC[EOF]
- 191 名前:デフォルトの名無しさん mailto:sage [2017/06/10(土) 10:49:19.67 ID:qGbgn0XY.net]
- htom.in.coocan.jp/hmfaq8/4_regular.html#RETURNS
- 192 名前:デフォルトの名無しさん mailto:sage [2017/06/10(土) 12:37:04.98 ID:6tXlKKLu.net]
- [ \s]*(?!\n)$(?#maxlines:99999999)
- 193 名前:デフォルトの名無しさん mailto:sage [2017/06/12(月) 04:37:37.47 ID:40WtKqR9.net]
- >>187
Qiitaなのでコメントまで必ず読むこと 正規表現の先読み/後読みを「絞り込み」と理解してみる - Qiita qiita.com/blackenedgold/items/382704cc54c8e42819d0 [コラム] 正規表現の先読み/後読みは、どう考えても名前が悪いので、呼称禁止令を出してルックと気軽に呼んでみませんか。 - Qiita qiita.com/mochizukikotaro/items/84f3ab2740b8efbe0dc6 後者は日本語表現のネタモノなので理解にはあまり役に立ちませんが
- 194 名前:デフォルトの名無しさん mailto:sage [2017/06/12(月) 04:43:04.94 ID:3uouTe/z.net]
- >>191
ありがとう。読んでみます
- 195 名前:デフォルトの名無しさん mailto:sage [2017/06/15(木) 14:44:28.61 ID:p0Tdw73d.net]
- そもそも「正規表現」が誤訳だし
「先読み/後読み」がどうだって驚かない
- 196 名前:デフォルトの名無しさん mailto:sage [2017/06/15(木) 17:11:52.26 ID:vJds0eqB.net]
- 名前なのに誤訳ってなんだよ
- 197 名前:デフォルトの名無しさん mailto:sage [2017/06/15(木) 20:46:27.61 ID:am9DsefU.net]
- 「正規表現」が誤訳!!www
- 198 名前:デフォルトの名無しさん mailto:sage [2017/06/15(木) 21:53:29.88 ID:5Ry9SVFq.net]
- 前厄,翻訳,後厄
- 199 名前:デフォルトの名無しさん mailto:sage [2017/06/15(木) 23:55:29.06 ID:kDv/IOKj.net]
- 非正規労働者に謝れ
- 200 名前:デフォルトの名無しさん mailto:sage [2017/06/16(金) 00:00:22.35 ID:AvJwaQP1.net]
- >>193
そんな感じがする でも
- 201 名前:闥して何十年経過したからいまさら変更できない
直訳すると正則記法? [] - [ここ壊れてます]
- 202 名前:デフォルトの名無しさん mailto:sage [2017/06/16(金) 00:03:22.93 ID:ugmLNmLC.net]
- まさのりって誰よ?
- 203 名前:デフォルトの名無しさん mailto:sage [2017/06/16(金) 00:09:53.04 ID:7387anCt.net]
- >>198
数学用語で考えると、「正則式」
- 204 名前:デフォルトの名無しさん mailto:sage [2017/06/16(金) 00:28:35.35 ID:CHM/yJyC.net]
- 誤訳にしたくて必死過ぎw
- 205 名前:デフォルトの名無しさん mailto:sage [2017/06/16(金) 00:34:50.74 ID:PEuGYK32.net]
- 確かに数学的にはregularは正則でnormalが正規だけども
正規表現が正則式だの正則表現になったからといって何が分かりやすくなるでもなし
- 206 名前:デフォルトの名無しさん mailto:sage [2017/06/16(金) 01:26:14.32 ID:1cZCMNBu.net]
- ID変わった時間に擁護
- 207 名前:デフォルトの名無しさん mailto:sage [2017/06/16(金) 03:20:09.01 ID:cmFh/xD2.net]
- 英語圏の人たちにとってもRegular Expressionと言われて
[ \s]* みたいなことか〜て思い浮かぶわけでもなかろ 単に「それを何と呼ぶか」つまり名前付けをどうするってだけのことだよ ただ日本では(2chだけかもしれないけど)性器表現とか茶々入れる奴がいるのが面倒くさい
- 208 名前:デフォルトの名無しさん mailto:sage [2017/06/16(金) 06:44:35.89 ID:HukDnr5k.net]
- 2chに限らずゲスな一般大衆の猿共は真っ先に性器と捉える
正規よりかは正則の方が良かっただろうけど 若い女の子へのセクハラに使えるから正規も捨て難い まあ今時「せいき」の言葉にモジモジする女子なんて希少だが居なくは無い
- 209 名前:デフォルトの名無しさん mailto:sage [2017/06/16(金) 12:48:55.14 ID:dHQ1DtF8.net]
- くっさ
- 210 名前:デフォルトの名無しさん mailto:sage [2017/06/16(金) 13:01:55.39 ID:KyUpje1a.net]
- 正規表現で置換
- 211 名前:デフォルトの名無しさん mailto:sage [2017/06/16(金) 16:51:35.05 ID:ugmLNmLC.net]
- >>207
通報した
- 212 名前:デフォルトの名無しさん mailto:sage [2017/06/16(金) 17:21:44.35 ID:HukDnr5k.net]
- 痴漢の際に性器表現を用いた
- 213 名前:デフォルトの名無しさん [2017/06/16(金) 18:35:19.21 ID:1eQLQexT.net]
- 成基学園ってまだあるんかね
- 214 名前:デフォルトの名無しさん [2017/06/16(金) 22:02:33.78 ID:fr6XvX0v3]
- 緊急で知りたいのでお願いします
●Regular Expressionの使用環境 linux 4.1 カーネル
●検索か置換か? 置換
●説明 デジカメのファイル名を一括で変更したい
●対象データ DSC_で始まり4桁の数字.jpg DSC_0414.jpg DSC_0415.jpg DSC_0416.jpg
●希望する結果 001.jpgから3桁で順番 001.jpg 002.jpg 003.jpg
- 215 名前:デフォルトの名無しさん mailto:sage [2017/06/19(月) 22:55:10.17 ID:HM1jnBNt.net]
- システム関係の仕事してるけど正規表現知ってるとホント仕事がはかどるわ
知らん奴いたら教えたくないレベルw
- 216 名前:デフォルトの名無しさん mailto:sage [2017/06/20(火) 00:30:35.64 ID:qgvPAN/M.net]
- システム関係の仕事って自宅警備員のこと?
- 217 名前:デフォルトの名無しさん mailto:sage [2017/06/20(火) 08:43:02.71 ID:bMt5HDL+.net]
- >>209
正規表現を用いて置換と挿入を行った だろ
- 218 名前:デフォルトの名無しさん [2017/06/20(火) 12:36:20.94 ID:5s5M5H6z.net]
- 痴漢と挿入
- 219 名前:デフォルトの名無しさん mailto:sage [2017/06/20(火) 16:59:32.57 ID:V+xxZfop.net]
- 表現を抜いてれば完璧
- 220 名前:デフォルトの名無しさん mailto:sage [2017/06/22(木) 00:33:36.51 ID:WTVST2HN.net]
- 痴漢って挿入する前にするものなのか?
- 221 名前:デフォルトの名無しさん [2017/06/25(日) 14:01:32.44 ID:cBKwT0iz.net]
- 挿入したら痴漢じゃなくなるからそういうことだな
- 222 名前:デフォルトの名無しさん [2017/06/25(日) 14:08:45.87 ID:cBKwT0iz.net]
- 質問です。
ttp://hayabusa3.2ch・sc/test/read.cgi/news/1498009569/ ↑ここに、「それは文科省にとってリスクか&#12441;あるわけて&#12441;すね。」っていう文章があります。 これをエディタで置換したいです。 秀丸エディタには半角化、全角化があるので、 「&#12441;」を「゛」に、「゛」とその前を半角に、「゙」とその前を全角にと言う手順で全角濁音化することができます。 しかし、段階的に置換すると、[ニダ]と言う文字が[ニダ]となります。 専ブラでなく普通のエディタでメール欄に限定せず「&#12441;」だけをちゃんと全角濁音化するにはどうしたらいいでしょうか。
- 223 名前:デフォルトの名無しさん [2017/06/25(日) 14:14:01.85 ID:cBKwT0iz.net]
- 変換関数をネストして、全角から直接全角に置換すれば大丈夫っぽいです。
スレ汚し失礼しました。
- 224 名前:デフォルトの名無しさん mailto:sage [2017/06/25(日) 14:17:59.69 ID:lrjpj5rj.net]
- マクロ
- 225 名前:デフォルトの名無しさん [2017/06/25(日) 14:24:13.60 ID:cBKwT0iz.net]
- マクロを覚えるほど気力ないので。
せいぜいキーボードマクロまでですね。 メモ: 1回目「゙」→「゛」 2回目「[か-こさ-そた-と][゛]」→「\((0,ToHankaku),ToZenkakuHira)」
- 226 名前:デフォルトの名無しさん mailto:sage [2017/06/25(日) 14:40:18.89 ID:gOEYQ1GV.net]
- Unicode正規化
- 227 名前:デフォルトの名無しさん [2017/06/25(日) 15:09:28.12 ID:cBKwT0iz.net]
- ID:fr6XvX0v3
DOSコマンドでいけるよ 【.cmd】 バッチファイルスクリプト %12 【.bat】 mevius.2ch.net/test/read.cgi/tech/1489207631/ なんかscに書けなくなった。 認証が延々と出てくる。
- 228 名前:デフォルトの名無しさん [2017/06/25(日) 15:19:25.37 ID:cBKwT0iz.net]
- >>223
なるほど。 hide.maruo.co.jp/lib/hmconv/normalize101.html > Unicode正規化を行ないます。 > パラメータとしてNFC、NFD、NFKC、NFKDが指定可能です。 Googlエ > 合成形に正規化する方法を NFC(Normalization Form Composition)
- 229 名前:デフォルトの名無しさん [2017/06/29(木) 16:59:45.11 ID:02bfNUCV.net]
- 質問します
●Meryで置換 ●対象データ wwwwwwwa,AAAAA,gawgagaw,fwaf awfaf n,BBB,gawgagaw,fwaf awfa,fwaaw,fwaaw rea,CCCC ae,DD,gawgagaw,fwaf awfaf ,fwaaw ●希望する結果 カンマ2番目の AAAAA BBB CCCC DD を ****** ****** ****** ****** に置換 ● (?<=,).*?(?=[,\n]) までは考えましたがこれ以上力不足でわかりません よろしくお願いします
- 230 名前:デフォルトの名無しさん mailto:sage [2017/06/29(木) 18:40:30.46 ID:poRQnsAj.net]
- (^.*?,).*?(?=[,¥n])
rea,CCCCのパターンが行末だとできないんだよなー。
- 231 名前:デフォルトの名無しさん mailto:sage [2017/06/29(木) 18:57:06.54 ID:WmvxL1Sm.net]
- ^([^,]*,)[^,\r\n]+
を $1****** に置換 "a,b",defのようなものはダメだが
- 232 名前:デフォルトの名無しさん [2017/06/30(金) 03:23:16.33 ID:9+Qy2E7i.net]
- >>227-228
ありがとうございます 上手くいきました 使わせていただきます&勉強材料にさせていただきます
- 233 名前:デフォルトの名無しさん mailto:sage [2017/07/06(木) 20:38:45.39 ID:zX6kiHLz.net]
- 質問です。
●Regular Expressionの使用環境 Java Script ●検索か置換か? 置換 ●対象データ abc:ABCDEFG def:123456789 ghi:くぁwせdr ●希望する結果 上記のような複数行の文字列があったとして、 "123456789"を取り出すにはどのようにしたら良いでしょうか? 条件としては、行頭の"def"をキーにして、 「defで始まる行の、def:の次の文字から行末まで」を取り出したいです。 よろしくお願い致します。
- 234 名前:デフォルトの名無しさん mailto:sage [2017/07/07(金) 08:13:19.50 ID:QFC9teR0.net]
- 後読みが使えないJSなら/def:(.*?$)/m
使えるなら/(?<=def:).*?$/m
- 235 名前:デフォルトの名無しさん mailto:sage [2017/07/08(土) 02:10:34.01 ID:OqNCkVph.net]
- BBCの正規表現クイズ。たまにはこういうのも面白いね
ttp://www.bbc.co.uk/programmes/articles/5LCB3rN2dWLqsmGMy5KYtBf/puzzle-for-today
- 236 名前:デフォルトの名無しさん mailto:sage [2017/07/08(土) 06:16:34.80 ID:b/20QJ7+.net]
- >>231
こういう場合、先読みの方法でやるメリットって有るんですか? 初心者なんで教えて下さい。
- 237 名前:デフォルトの名無しさん mailto:sage [2017/07/08(土) 06:17:08.46 ID:b/20QJ7+.net]
- 訂正
後読みでした。
- 238 名前:デフォルトの名無しさん mailto:sage [2017/07/08(土) 09:10:13.00 ID:NOOXEVdu.net]
- >>233
後読みの部分にはマッチしない つまり>>230で後読み使った場合には 123456789 にマッチするがそうでない場合は def:123456789 にマッチする
- 239 名前:デフォルトの名無しさん mailto:sage [2017/07/08(土) 19:51:13.74 ID:utlt5XjQ.net]
- 後読みの説明はそうなんだけど、>>231 について訊いてるんでしょ?
俺も>>231の意図はよくわからん。行単位の処理を希望してるのにm付けてるし
- 240 名前:デフォルトの名無しさん mailto:sage [2017/07/10(月) 01:20:40.78 ID:8zNQYoZi.net]
- >>232
日本語の記事 gigazine.net/news/20170707-regular-expression-puzzle/
- 241 名前:デフォルトの名無しさん mailto:sage [2017/07/15(土) 10:24:03.66 ID:/mu01QmD.net]
- >>232
新しいなコレ! 面白いんでエクセルで入力できるフォーマットを作ってみた www.dotup.org/uploda/www.dotup.org1307951.xls (拡張子でうちのエクセルが激古なのがバレる…)
- 242 名前:デフォルトの名無しさん mailto:sage [2017/07/15(土) 12:03:12.72 ID:6mzqXSAQ.net]
- 少しやって時間の問題だなと思って途中で切り上げて答見たけど
数文字しか合ってなかった 最後までやらなくてよかった
- 243 名前:デフォルトの名無しさん mailto:sage [2017/07/25(火) 08:57:23.04 ID:QW1aVSBc.net]
- ●Regular Expressionの使用環境
VBA7.1 ●検索か置換か? 検索 ●説明 期待する数値の桁数かどうか。拡張子はあっても無くても良い。 ●対象データ AA17-0001.xlsm AA17-0002 ●希望する結果 ifで合致しているかどうかを判定しています。 .Pattern = "^AA\d{2}-\d{4}(\.xlsm$)?" ○AA17-0001.xlsm ○AA17-0002 ×AA17-00023 ×AA17-00024.xlsm 最後の?を削れば、拡張仕込みであれば上手くいきますが良い方法は ないでしょうか。
- 244 名前:デフォルトの名無しさん mailto:sage [2017/07/25(火) 09:09:17.24 ID:jjK7Ecmt.net]
- >>240
VBAの仕様は知らんけど、これでできない? ^AA¥d{2}¥-¥d{4}(¥.xlsm)?$
- 245 名前:デフォルトの名無しさん mailto:sage [2017/07/25(火) 12:00:47.38 ID:QW1aVSBc.net]
- >>241
有り難うございます!ばっちりです。 $マークを足すだけで良かったんですね。助かりました。
- 246 名前:デフォルトの名無しさん mailto:sage [2017/07/25(火) 12:23:12.14 ID:QW1aVSBc.net]
- 差し支え無ければ、 ^AA\d{2}-\d{4}(\.xlsm)? だと
ND17-00001 ND17-00001.xlsm2 等々にもマッチしてしまう理由を教えていただけないでしょうか。
- 247 名前:デフォルトの名無しさん mailto:sage [2017/07/25(火) 12:24:08.99 ID:QW1aVSBc.net]
- ミス。AAでした。
AA17-00001 AA17-00001.xlsm2
- 248 名前:デフォルトの名無しさん mailto:sage [2017/07/25(火) 12:38:31.42 ID:0gI9u146.net]
- >>243,244
横からだけど AA17-0000部分にマッチしちゃうんじゃない?
- 249 名前:デフォルトの名無しさん mailto:sage [2017/07/25(火) 13:05:32.38 ID:BGzbzmfB.net]
- ^AA\d{2}-\d{4}(\.xlsm$)?
は "^AA\d{2}-\d{4}" と "^AA\d{2}-\d{4}\.xlsm$" という意味 AA17-00001 AA17-00001.xlsm2 の "AA17-0000" の部分に前者がマッチする "^AA\d{2}-\d{4}$" であればマッチしない
- 250 名前:デフォルトの名無しさん mailto:sage [2017/07/25(火) 13:22:18.59 ID:QW1aVSBc.net]
- なるほど。分かりやすく有り難うございます!
だから>>241で期待通りになるんですね。 頭固いと理解するのが大変です。。orz
- 251 名前:デフォルトの名無しさん mailto:sage [2017/07/25(火) 13:29:36.02 ID:oWvKCPb4.net]
- ?は「直前のパターンが 0回または 1回登場する事」なので、そのパターン中に、$「行末」を含めてしまうと、(0回登場側で)効果が消えてしまう。
1人で書いてるとよくやるミスだと思う。
- 252 名前:デフォルトの名無しさん [2017/07/25(火) 21:26:32.07 ID:lTcbRvTI.net]
- ^AA\d{2}-\d{4}
は実は ^AA\d{2}-\d{4}.*$ だと考えれば理解の助けになるかも。ならないかも。
- 253 名前:デフォルトの名無しさん mailto:sage [2017/07/26(水) 01:05:33.15 ID:3rtPYRQF.net]
- ^AA\d{2}-\d{4}(\.xlsm$)?
$? 行末の後ろに、? か。 この式は、見た瞬間に、おかしいとわかる
- 254 名前:デフォルトの名無しさん mailto:sage [2017/07/26(水) 11:10:37.56 ID:Vp/yahqk.net]
- >>250
文法的にも間違いでは無いだろ
- 255 名前:デフォルトの名無しさん mailto:sage [2017/07/26(水) 13:08:28.96 ID:9H6h7u80.net]
- >>251
文法的には正しいけれど、式としておかしい「と感じる事ができる」と言いたいんだと思う。
- 256 名前:デフォルトの名無しさん mailto:sage [2017/07/26(水) 14:48:10.36 ID:Vp/yahqk.net]
- >>252
式としても正しい
- 257 名前:デフォルトの名無しさん mailto:sage [2017/07/26(水) 14:55:46.30 ID:aH2YwDtv.net]
- 250,252みたいなのをアスペっていうんだろうな
論点は式や文法として正しいか正しくないかではないって事ぐらい一目見れば分かりそうなもんだが
- 258 名前:デフォルトの名無しさん mailto:sage [2017/07/26(水) 16:41:49.04 ID:NnPMbS6q.net]
- きちんと整理すると目的に合わない正規表現が直感的に分かるエスパー能力
としか言いようがないし>>250がその能力者だとしても特に羨ましくもない
- 259 名前:デフォルトの名無しさん mailto:sage [2017/07/26(水) 17:37:15.75 ID:UlpW8N7A.net]
- 例えば、エディタの検索等で強調表示する際の式としてなら何も不思議は無いが
プログラム中での判定式ならば後者は必ず前者にマッチするので意味を成さない つまり無駄に冗長であったり何かミスをしている可能性が高い。そういう事でしょ
|

|