はる~か昔に詳説 正規表現(初版)を購入したのです(←無謀!)
なんとか一読したものの、あまりの難しさに全く頭に入っていませんです。。。orz
で、今回を機に再度、勉強のやり直し。
再度なのか再々度なのか再々々度なのか忘れたww
サルにもわかる正規表現入門
からやり直しましょ^^
初心者にとって正規表現でややこしいのが^(キャロット)。
正規表現で行頭を表すのですが、 [ ] で括られた中で使用されると除外の意味になってしまうんですね。
で、サルにもわかる正規表現入門には\d{1,2}のように{ }を使った例が出てきません。
そんなわけで探したら
正規表現 - マンガで分かる JavaScriptプログラミング講座
に載っていた。マンガだと分かりやすいのぉ~。
でkanemuさんの
また、コンマ区切りと小数点、時間を表しているコロンがあった場合もマッチさせたくない。を読み解いています。
(?<=[^\d\.,:])(\d{1,2})(?=[^\d\.,:])
この文章にはないけれど、行頭もしくは行末に数字が来るかもしれない。
(?<=^|[^\d\.,:])(\d{1,2})(?=[^\d\.,:]|$)
[^\d\.,:]の\dの後にくる\が何かなぁ~?と考えましたら、価格を表す¥記号だったんですね。メタ文字なだけにちと悩みました(^^;
^|[^\d\.,:]を翻訳しますと「行頭あるか、もしくは半角数字、円記号、コンマ、小数点、コロン以外の文字」になります。
サルでもkanemuさんとchalcedonyさんを何度も読めば、理解できた気分になれてとても幸せになれます^^
続いて寺で正規表現で検索しましたら
CS1は正規表現が使えないのでムリですね。
CS2以降だったら、(?<![\.,])\b\d{2}\b(?![\.,])でイケる?
なんてのがありまして、\bは何かなぁ~?などと調べたら
“単語”の先頭、あるいは末尾にマッチします。言い換えれば、“語の区切り”とマッチするということです。たとえば \bball\bは、前後に空白のある ball にはマッチしますが、baseballには マッチしません。
秀丸で検証したところ\bはやはり行頭、行末にはマッチしませんでした。
気になるのは(?<=[^\.,:])と(?<![\.,:])
同じ意味のような、違うような。。。
0 件のコメント:
コメントを投稿