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

自分用にまとめました。
6
Excel VBA Diary (OneDrive問題に挑戦中) @excelvba_diary

#正規表現クイズ (No.11)解答 ^(?=.*(勝ち|勝利))(?!.*(負け|敗北)) ^(?!.*(負け|敗北))(?=.*(勝ち|勝利)) どちらでも構いません。図の解説を読んでください。次は明日(4/14)の朝に出題します。文字列置換の問題になります。 twitter.com/excelvba_diary… pic.twitter.com/8nCkPB8bLu

2021-04-13 18:12:22
Excel VBA Diary @excelvba_diary

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

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

@furyutei Text="負けるが勝ち" Pattern="(?=.*(勝ち|勝利))(?!.*(負け|敗北))" とした場合、肯定先読み側は 勝ち が勝ち るが勝ち けるが勝ち の文字列にもマッチングし、この位置からでは否定先読みもOKになってしまいますね。 CountRegExp関数でチェックすると、確かに4つのマッチングパターンとなります。 pic.twitter.com/pvcFJ2AwlT

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

補足です。^を省略するとなぜNGか? 例えば Text="負けるが勝ち" Pattern="(?=.*(勝ち|勝利))(?!.*(負け|敗北))" とした場合、肯定先読み側は  勝ち  が勝ち  るが勝ち  けるが勝ち の4パターンにもマッチングし、この位置からでは否定先読み側もマッチングしてしまいます。

2021-04-13 20:01:59
Excel VBA Diary (OneDrive問題に挑戦中) @excelvba_diary

@kyrtnyy @furyutei ですね。$はあってもなくてもかまいません。肯定先読みは一致するものが一つでもあれば、そこで判定されます。無い場合は最後まで読みに行きます。一方、否定先読みは最後まで読んで初めて「無い」と判定できます。つまり、今回のように単に一致/不一致を判定するだけなら$は要りません。

2021-04-13 21:40:51
Excel VBA Diary (OneDrive問題に挑戦中) @excelvba_diary

#正規表現クイズ (No.12) ReplaceRegExp関数を使う問題です。箇条番号の位置やスペースの数が不揃いな文を図のように整形する検索パターンと置換文字列を考えてください。箇条番号は半角()で囲み直します。箇条番号と文章の間は半角スペースとします。回答解禁時刻は15:00、回答は引用ツイートで。 pic.twitter.com/BCVnw2yGV5

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

#正規表現クイズ (No.12) 解答 検索パターン = "^\s*(\d+)\)\s*" 置換文字列 = "($1) " この解答例は、ReplaceRegExp関数を使いますので、1行づつ処理する前提になります。もちろんMultiLine プロパティを有効にして複数行を一括処理してもよいでしょう。どの回答も力作ですね。 twitter.com/excelvba_diary… pic.twitter.com/C24DsZeMFs

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

#正規表現クイズ (番外編) IsMatchRegExp関数を使う問題です。正規表現だけでセル番地として認識できるかどうか判定するパターンを考えてください。条件:A1形式のみとする。絶対参照、相対参照のどちらにも対応できること。 番外編につき回答解禁時刻は設定しません。明日は通常の問題はお休みです。 pic.twitter.com/K6ptnZx2u5

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

@kyrtnyy 少し追加してありますが(^^; $A$0 A0 $A$0000000 $A$0000001 $A$1 $A1 A$1 A1 $AB$123 $AB123 AB$123 AB123 $WFF$0999999 $XFD$1048576 $XFE$1048576 $XFD$1048577 XFD1048576 XFE1048576 XFD1048577 $AA$AA $123$123 A2

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

#正規表現クイズ (番外編) テスト用の文字列です。少し追加してあります。 $A$0 A0 $A$0000000 $A$0000001 $A$1 $A1 A$1 A1 $AB$123 $AB123 AB$123 AB123 $WFF$0999999 $XFD$1048576 $XFE$1048576 $XFD$1048577 XFD1048576 XFE1048576 XFD1048577 $AA$AA $123$123 A2 twitter.com/excelvba_diary…

2021-04-14 21:08:32
Excel VBA Diary (OneDrive問題に挑戦中) @excelvba_diary

#正規表現クイズ (番外編) 解答 ^(?!.{256})\$?(?:[A-Wa-w]?[A-Za-z]{1,2}|[Xx]([A-Ea-e][A-Za-z]|[Ff][A-Da-d]))\$?0*(?:[1-9]\d{0,5}|10[0-3]\d{4}|104[0-7]\d{3}|1048[0-4]\d{2}|10485[0-6]\d|104857[0-6])$ 255文字を超えた場合は不一致としています。その他は回答者の皆さんの考え方と同じです。 twitter.com/excelvba_diary… pic.twitter.com/R91HorpJRh

2021-04-15 14:58:55
拡大
Excel VBA Diary (OneDrive問題に挑戦中) @excelvba_diary

#正規表現クイズ (No.13) IsMatchRegExp関数を使う問題です。図に示すとおりの指定された文字の種類と文字数のパスワードになっているかチェックするパターンを考えてください。他の方の思考時間のため回答解禁時刻は15:00とします。回答は引用ツイートでお願いします。 pic.twitter.com/MrPnXe8R6S

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

サンプルテキストです。判定結果は図を。 Excel-1 Excel#12 Office.2019 excelvba2021 ExcelVBA2021 Excel-VBA-2021 Office/Home&Business2019 Microsoft.Office.2019/365 RegExp.Quiz-No.13 正規表現Quiz-No.13 twitter.com/excelvba_diary… pic.twitter.com/yzn6q7hFoQ

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

@kyrtnyy [_->] は "_" から ">" までと解釈されますが、文字コード(UNICODE)が昇順になっていません。_ はu005Fで、>はu003Eです。[a-z]を[z-a]とするのと同じで、昇順になっていないとエラーになります。私の環境では実行エラーにはならずセルに「#VALUE!」と表示されますが..;;

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

#正規表現クイズ (No.13) 解答 ^(?=[\u0021-\u007E]{8,24}$)(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[\u0021-\u002F\u003A-\u0040\u005B-\u0060\u007B-\u007E]) 肯定先読みを組み合わせる問題です。^(?=~{8,24}$)で8文字以上24文字以下に限定します。記号はUNICODEで表現しました。詳細は図(2例)を。 twitter.com/excelvba_diary… pic.twitter.com/dDGS8kAXFa

2021-04-16 17:27:00
拡大
拡大
Excel VBA Diary (OneDrive問題に挑戦中) @excelvba_diary

#正規表現クイズ (No.14) ^(\u0072\u006F).{3}\s\1(..)\s.{3}\2$ ^(?=.{6}$)\u305C(.).*\1 久しぶりにパターンからテキストを当てる問題です。 上は英語、下はその邦訳(ひらがな)です。回答時刻制限なしの週末問題。ヒント:今の日本、問題が多過ぎて〇〇〇〇です。

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

#正規表現クイズ (No.14) 解答 rocky road ahead ぜんとたなん "rocky road ahead"は日本語で前途多難。アメリカの報道でよく使われていますね。次回は月曜(4/19)の朝です。 twitter.com/excelvba_diary… pic.twitter.com/BsSXC8wKqr

2021-04-17 15:11:11
拡大
Excel VBA Diary (OneDrive問題に挑戦中) @excelvba_diary

#正規表現クイズ (No.15) 半角のカンマで区切られる単語が並んでいます。 富士山,槍ヶ岳,奥穂高岳,間ノ岳,北岳,悪沢岳,赤石岳 この中の2番目の単語と5番目の単語を入れ替える検索パターンと置換文字列を考えてください。 他の方の思考時間のため回答は15:00以降。回答は引用ツイートで。 pic.twitter.com/cSnfnTcEKY

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

正規表現のクイズは、「たった一行」で済むという性質から、どうしても中級レベルの問題が中心になってしまう。初級レベルは独学でも可能でクイズになりにくい。中級にステップアップするには「お決まりのパターン」を覚えそれを応用する技術が必要になる。実はそこが難しいかもしれない。

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

#正規表現クイズ (No.15)解答 ^(.*?)(,.*?)((?:,.*?){2})(,.*?)(,.*) と $1$4$3$2$5 または ^([^,]*)(,[^,]*)((?:,[^,]*){2})(,[^,]*)(,.*) と $1$4$3$2$5 詳しくは図を見てください。カンマで区切られた単語を入れ替える、お決まりのパターンです。次は明日(4/20)の朝です。この問題の応用です。 twitter.com/excelvba_diary… pic.twitter.com/p5mWKvlhbn

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

#正規表現クイズ (No.16) No.15の続き。半角のカンマで区切られた単語が並んでいます。このうち、2番目の単語と5番目の単語を入れ替える検索パターンと置換文字列を考えてください。5番目の単語が無い場合は置換せずそのままとします。他の方の思考時間のため回答は15:00以降、引用ツイートで。 pic.twitter.com/Cn5OQx3Dwj

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

サンプルテキストはこちら。 富士山,槍ヶ岳,奥穂高岳,間ノ岳,北岳,悪沢岳,赤石岳 富士山,槍ヶ岳,奥穂高岳,間ノ岳,北岳,悪沢岳 富士山,槍ヶ岳,奥穂高岳,間ノ岳,北岳 富士山,槍ヶ岳,奥穂高岳,間ノ岳

2021-04-20 05:43:52
Excel VBA Diary (OneDrive問題に挑戦中) @excelvba_diary

#正規表現クイズ (No.16) 解答 ^(.*?)(,.*?)((?:,.*?){2})(,.*?)(,.*|$) と $1$4$3$2$5 または ^([^,]*)(,[^,]*)((?:,[^,]*){2})(,[^,]*)(,.*|$) と $1$4$3$2$5 No.15との違いは最後の (,.*|$) だけです。これで5番目の後ろは末尾でもマッチング可能となります。次は明日(4/21)の朝です。 twitter.com/excelvba_diary… pic.twitter.com/DzFTBDjbSb

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

#正規表現クイズ (No.17) 半角のカンマで区切られた単語が並んでいます。このうち、最初と最後の単語を入れ替える検索パターンと置換文字列を考えてください。1行ずつ処理します。他の方の思考時間のため回答は15:00以降でお願いします。回答は引用ツイートで。 pic.twitter.com/kMelJsPl8o

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

#正規表現クイズ (No.17) サンプルテキスト 1行ずつ処理します。 槍ヶ岳,北岳,奥穂高岳,間ノ岳,富士山 奥穂高岳,北岳,富士山 北岳,富士山 槍ヶ岳,,,,富士山 槍ヶ岳,,,, ,,,,富士山 北岳, ,富士山 twitter.com/excelvba_diary…

2021-04-21 06:03:44
Excel VBA Diary (OneDrive問題に挑戦中) @excelvba_diary

#正規表現クイズ (No.17) 解答 (.*?)((?:,.*)*,)(.*) と $3$2$1 または ([^,]*)(.*,)(.*) と $3$2$1 最初と最後の入れ替えは比較的短いパターンでできますね。詳しくは図を見てください。 次回は明日(4/22)の朝です。住所を扱う問題を予定しています。 twitter.com/excelvba_diary… pic.twitter.com/4M74pLSjGh

2021-04-21 18:08:04
拡大
拡大