2021-04-16 CS ExcelVBADiaryさんの正規表現クイズ

自分用にまとめました。
6
前へ 1 2 ・・ 5 次へ
Excel VBA Diary (OneDrive問題に挑戦中) @excelvba_diary

この問題は少し難しかったかもしれません。後出しですが、二桁以上の数字の先頭の0は許容するものとします。19時ころ予定の解説では許容しない正規表現もあわせて紹介したいと思います。

2021-04-05 16:54:50
Excel VBA Diary (OneDrive問題に挑戦中) @excelvba_diary

#正規表現クイズ (No.5) 解答 ^(?:\d+|\d{1,3}(?:,\d{3})*)$ 今回はキャプチャする必要がないので(?:~)を使ってみました。キャプチャするものと、しないものを区別して処理する場合に必須です。数字だけのパターンと通貨表示のパターンを分けて考え、(?:~|~) と連結すると分かりやすいと思います。 twitter.com/excelvba_diary… pic.twitter.com/wwb52wsblz

2021-04-05 19:22:28
Excel VBA Diary @excelvba_diary

#正規表現クイズ (No.5) 文字列(Text)が数字または通貨表示(3桁区切り)の場合に一致、それ以外は不一致とするパターン(Pattern)を考えてください。前後に数字以外の文字が付いた場合は不一致。 判定例と使用する関数を図に示します。他の方の思考のため回答は本日15:00以降で。回答は引用ツイートで。 pic.twitter.com/j8iobjMwth

2021-04-05 06:01:08
拡大
Excel VBA Diary (OneDrive問題に挑戦中) @excelvba_diary

2桁以上の先頭の0を許容しない場合は ^(?:0|[1-9]\d*|[1-9]\d{0,2}(?:,\d{3})*)$ とします。もちろん、これが唯一のパターンではありません。\dは[0-9]でも構いません。

2021-04-05 19:25:25
Excel VBA Diary (OneDrive問題に挑戦中) @excelvba_diary

#正規表現クイズ (No.6) は明日(4/6)の朝に出題します。No.4 で出題したパターンを使った応用編です。(No.5)の解答が理解できれば簡単かもしれません。

2021-04-05 19:40:59
Excel VBA Diary (OneDrive問題に挑戦中) @excelvba_diary

#正規表現クイズ (No.6) No.4の問題(図)の続きです。この型番をカンマ "," で連結して1行にまとめます。正しい型番で連結できているかどうかチェックするパターンを考えてください。判定例を図に示します。他の方の思考のため回答解禁時刻は15:00。引用ツイートで回答して下さい。 pic.twitter.com/jy3rv3k3uE

2021-04-06 05:50:05
拡大
拡大
Excel VBA Diary (OneDrive問題に挑戦中) @excelvba_diary

#正規表現クイズ 現在、IsMatchRegExp関数を使った一致/不一致判定の出題が中心ですが、そろそろReplaceRegExp関数を使った文字列の置き換えの出題も加えていく予定です。

2021-04-06 17:08:17
Excel VBA Diary (OneDrive問題に挑戦中) @excelvba_diary

#正規表現クイズ (No.6) 解答 ^[A-Z]\d{6}-\d{1,3}(?:,[A-Z]\d{6}-\d{1,3})*$ No.4の解答をそのまま使います。カンマをカンマを含む2回目のパターンをグループ化するのがポイントです。否定後読みを使うテクニックがあります。それが風柳さんの回答です。 ^([A-Z]\d{6}-\d{1,3}(,(?!$)|$))+$ twitter.com/excelvba_diary…

2021-04-06 19:23:01
Excel VBA Diary (OneDrive問題に挑戦中) @excelvba_diary

#正規表現クイズ ReplaceRegExp関数の紹介です。次回のクイズからこの関数も使っていきます。この関数もワークシートから呼び出せます。図のような利用をすればいろいろなパターンの検証ができます。関数のVBAコードはとても簡潔ですが、かなり強力だということがだんだんわかってきます。 pic.twitter.com/MK1K5rOxvd

2021-04-06 19:47:04
拡大
拡大
Excel VBA Diary (OneDrive問題に挑戦中) @excelvba_diary

#正規表現クイズ (No.7) ReplaceRegExp関数(図)を使った文字列置換問題です。 "VBAはツールである。だれもがVBAerだ。" を "VBAはツールです。だれもがVBAerです。" に変換する検索パターンと置換文字列を考えてください。他の方の思考時間を考慮し15:00を回答解禁時刻とします。回答は引用ツートで。 pic.twitter.com/2s0yaWpgkJ

2021-04-07 05:38:00
拡大
Excel VBA Diary (OneDrive問題に挑戦中) @excelvba_diary

#正規表現クイズ (No.7) 解答 代表的な組み合わせを3つ解答例として図に示します。今回の文字列置換は、パターンに一致した文字列を置換するという、最も基本的なものです。まずはこれをおさえておきましょう。次は明日(4/8)の朝に出題します。(既にヒント出してますが....) twitter.com/excelvba_diary… pic.twitter.com/6lgiuRCplM

2021-04-07 19:37:50
拡大
Excel VBA Diary (OneDrive問題に挑戦中) @excelvba_diary

#正規表現クイズ (No.8) 頭に"桜"がつく単語が並んでいます。このうち、桜えびと桜餅の"桜"だけを"白"に変換する検索パターンと置換文字列を考えてください。 変換前:桜木町、桜えび、桜橋、桜餅、桜が丘 変換後:桜木町、白えび、桜橋、白餅、桜が丘 回答解禁時刻は15:00。回答は引用ツイートで。 pic.twitter.com/U1ZI6tJFhB

2021-04-08 06:02:14
拡大
拡大
Excel VBA Diary (OneDrive問題に挑戦中) @excelvba_diary

#正規表現クイズ 正規表現の検証に役立つ関数 IsMatchRegExp - 検索パターンにマッチングしているかどうか検査する ReplaceRegExp - 検索パターンにマッチングする文字列を指定した文字列に置換する CountRegExp - 検索パターンに一致する文字列の個数をカウントする (IsMatchRegExpの代わりに使える) pic.twitter.com/8Nh9LRJHE6

2021-04-08 07:50:09
拡大
拡大
拡大
Excel VBA Diary (OneDrive問題に挑戦中) @excelvba_diary

@furyutei カンマが誤解を与えたかもしれませんね。確かに「桜餅」と「桜餅もどき」は区別する必要があるので単語の区切りを認識するパターンが要ります。今回は区切り文字を含め厳密な条件を提示していませんので、前提さえあればOKとすることにしていました。それにしても工夫されていますね。

2021-04-08 15:24:57
Excel VBA Diary (OneDrive問題に挑戦中) @excelvba_diary

今回のクイズは細かい条件を提示していませんのでサンプルで変換できればOKとします。もちろん、前提条件を設定しての回答もOKです。ヒント、「肯定先読み」を使います。 twitter.com/excelvba_diary…

2021-04-08 15:38:46
Excel VBA Diary (OneDrive問題に挑戦中) @excelvba_diary

#正規表現クイズ (No.8) 解答 文字列制限の都合から解答は図に示します。基本は肯定先読みを利用することと、その利用に2つの考え方があるということです。肯定先読みは、文字列にではなく「位置に一致させる」ためのものだと理解するとよいかもしれません。次の出題は明日(4/9)の朝です。 twitter.com/excelvba_diary… pic.twitter.com/zECuzEGmHn

2021-04-08 18:54:18
拡大
拡大
Excel VBA Diary (OneDrive問題に挑戦中) @excelvba_diary

#正規表現クイズ (No.9) 頭に"桜"がつく単語が並んでいます。このうち、桜えびと桜餅以外の"桜"を"藤"に変換する検索パターンと置換文字列を考えてください。 桜木町、桜えび、桜橋、桜餅、桜が丘 ↓ 藤木町、桜えび、藤橋、桜餅、藤が丘 詳しくは図を。回答解禁時刻は15:00。回答は引用ツイートで。 pic.twitter.com/R0htLoOn3B

2021-04-09 06:01:57
拡大
拡大
Excel VBA Diary (OneDrive問題に挑戦中) @excelvba_diary

#正規表現クイズ (No.9) ヒント 15:00になりましたのでヒントです。 否定先読み (?!~)を使います。またNo.8で解説したパターンが使えます。 twitter.com/excelvba_diary…

2021-04-09 15:01:55
Excel VBA Diary (OneDrive問題に挑戦中) @excelvba_diary

#正規表現クイズ (No.9) 解答 今回の問題は否定先読み(?!~)を使う問題です。詳しくは図を見てください。否定先読みも、文字列ではなく「位置に一致させるための」ものだと理解するとよいでしょう。次回のクイズは4/12(月)の朝を予定しています。 twitter.com/excelvba_diary… pic.twitter.com/LjXLdQUARG

2021-04-09 18:51:04
拡大
拡大
Excel VBA Diary (OneDrive問題に挑戦中) @excelvba_diary

#正規表現クイズ (No.10) IsMatchRegExp関数を使う問題です。文字列の中に、"池江"、"競泳"、"優勝" の3つのキーワードを含む場合に一致となるパターンを考えてください。キーワードの出現の順番は問いません。他の方の思考時間のため回答は15時以降、回答は引用ツイートでお願いします。 pic.twitter.com/tWSEEJMmRE

2021-04-12 05:48:33
拡大
拡大
Excel VBA Diary (OneDrive問題に挑戦中) @excelvba_diary

#正規表現クイズ (No.10) 解答 (?=.*池江)(?=.*競泳)(?=.*優勝) 肯定先読みの性質を利用します。複数のキーワードを含むかどうかを判定する定番パターンと言っていいでしょう。次回の出題は明日(4/13)の朝です。 twitter.com/excelvba_diary… pic.twitter.com/VKgWm5F5Sm

2021-04-12 18:52:43
拡大
Excel VBA Diary (OneDrive問題に挑戦中) @excelvba_diary

訂正です。このクイズでは問題ありませんが、確実に先頭からマッチングさせるには ^(?=.*池江)(?=.*競泳)(?=.*優勝) とするのがよいと分かりました。マッチング速度もこちらが速いです。

2021-04-12 19:42:32
Excel VBA Diary (OneDrive問題に挑戦中) @excelvba_diary

@kyrtnyy 訂正です。このクイズでは問題ありませんが、確実に先頭からマッチングさせるには ^(?=.*池江)(?=.*競泳)(?=.*優勝) とするのがよいと分かりました。マッチング速度もこちらが速いです。

2021-04-12 19:43:55
Excel VBA Diary (OneDrive問題に挑戦中) @excelvba_diary

@kyrtnyy CountRegExpを使ってみるとわかりますね。 ^を付けると1回マッチですが、付けないと数回マッチしてしまう場合があります。マッチする回数が増えるということは、それだけ処理速度が遅くなることを意味します。 pic.twitter.com/M4iGUQzMCs

2021-04-12 20:34:39
拡大
Excel VBA Diary (OneDrive問題に挑戦中) @excelvba_diary

#正規表現クイズ (No.11) IsMatchRegExp関数を使う問題です。文字列の中に、"勝ち" 又は "勝利" を含み、"負け" 又は "敗北" を含まない場合に一致となるパターンを考えてください。他の方の思考時間のため回答は15:00以降で、引用ツイートで回答してください。 pic.twitter.com/SRp4mRRntu

2021-04-13 05:34:19
拡大
拡大
Excel VBA Diary (OneDrive問題に挑戦中) @excelvba_diary

正規表現をテストするならRubularが便利。Ruby向けですがVBScriptの正規表現にも使えます。 rubular.com/r/d0kgvX6pNjiq… pic.twitter.com/sameX8WCa4 pic.twitter.com/HgyRb5SGd5

2021-04-13 08:47:58
拡大
拡大
前へ 1 2 ・・ 5 次へ