論理積このサイトは、只今WEB業界で活躍中のデザイナー、プログラマーの方々の情報を集めたweb統合情報サイトです。論理積JavaScript2019.07.28この記事は最終更新日から1年以上が経過しています。前の話となるのですが忘れない為にも備忘録的な感じで。以前、メンバーから「HTMLのstylesheet要素からパスを取得したい」といった話がありまして、そんな時は正規表現ですよね。hrefの「./assets/css/style.css」といった、パスのみを取得するのです。メンバーが記述したソースは以下の様な感じ。rel="stylesheet")/);うーん。分かるのですがスマートではないですよね。正規表現なので、冗長(繰り返し記述)になってしまっているので、短くしたいでよね。$をうまい使い分けで行けないのかなぁ。いったイメージでした。(できるかどうかはさておき)そこで、メンバーからは、「cssのパスのみreplace対象としたかったです。以下の様に、どこに記述していても取得できるよう。rel="stylesheet">考えた結果、以下のソースになったと。href="./assets/css/style.css?1548407079010">そもそも、なぜパスを取得するかと言いますと、パスの後ろにタイムスタンプを付与し、キャッシュ無効にする為(ライブラリ)でした。マッチさせようとしてもうまい正規表現ができませんでした。“./assets/css/style.css”」を抽出してからrelpaceを実行した。シンプルに行けるはず。とアドバイスしたところ。linkが増えちゃった。w違うw最後投げやりになってしまった感じwと、レビューするものは、メンバーは「これでOK」と思っているソースに関してレビューし、リファクタリングして良くなりそうなものにはアドバイスが必要となります。実際に記述するのではなく、「ヒント」を与えることが重要だと思っております。そこで、意図を理解し、しっかりソースを記述できる人と、できない人で分かれると思うんですよね。最終的に「できない」と判断した場合、自分が記述するようにしています。いうことで、出先だったので、スマホアプリで記述することに。後方置換のイメージだったので。href="([0-9a-zA-Z\:\-\.\/_]+)"\s?($1)?こんな感じなのかな。実際にアプリで記述してみたところ、最初にマッチしないと、後方参照は厳しめなのが判明。あれやこれやと試していたのですが、そもそも先読み後読みとか、後方参照とか、ちょっと難しく考えすぎたみたいでした。論理積で解決できることが判明しました。orz^(?=.*href="([0-9a-zA-Z\:\-\.\/_]+))(?=.*rel="stylesheet")最終的、「シングルクォート、ダブルクォート」を考慮した正規表現^(?=.*href=["|']([0-9a-zA-Z\:\-\.\/_]+\.css))(?=.*rel=["|']stylesheet["|'])もう忘れかけていたので、備忘録です。Expressions詳細リンクhttps://apps.apple.com/us/app/regex-lab-regular-expressions/id1252988123無料で利用できて良いです。testerhttp://www.rubular.com/Ruby専用なのですが、いくつか利用している中でも、結果後が見やすいので使用してます。Amazon調べ-詳細)Amazon楽天市場Yahooショッピング定番といえば定番かもしれませんが、この本を読んで「正規表現」に対する理解が深まった気がします。この本はおすすめです。10年前よりかは「得意」にはなった気がしますが、今回書いたような記述がもっとパッと記述できるようにまだまだ勉強不足ですね。