GOL @Wiki
スクリプト関連技術
最終更新:
divadiva
-
view
JavaScriptなどスクリプト周辺技術(?)の備忘録です。
正規表現
日本語のHPでも正規表現関係の記述はたくさんあるのですが、複雑なものになると、記述がなかったりします。下記は英語ですが、けっこう詳しい。
http://www.regular-expressions.info/
http://www.regular-expressions.info/
日本語ですと、下記のページが参考になりました。下記ページに書いてあるように、ちゃんと勉強したい人は本を買おう。
http://www4.ocn.ne.jp/~kaerume/k2e/regex_top.html#mnu_top
http://www4.ocn.ne.jp/~kaerume/k2e/regex_top.html#mnu_top
本を買わずに知りたい人は、上記英語サイトを読もう。
また、正規表現のテストをしたいときは、このサイトが役に立ちます。画面右の「JavaScript」タブをクリックし、「Regular Expression」の項目に正規表現を、「Target」の項目にマッチングしたい文字列を入力すると、マッチング結果が表示されます。
<後方参照と非格納グループ>
後方参照(back reference)を使うと、マッチした文字列を後で参照することができます。たとえば、「YZF-R6:WR250R」を「([\w-]+):(\w+)」でマッチングすると、$1という変数には最初のカッコ内でマッチングした「YZF-R6」が、$2には2つ目のカッコでマッチングした「WR250R」が入り、後で変数値を使いまわすことができます。
後方参照(back reference)を使うと、マッチした文字列を後で参照することができます。たとえば、「YZF-R6:WR250R」を「([\w-]+):(\w+)」でマッチングすると、$1という変数には最初のカッコ内でマッチングした「YZF-R6」が、$2には2つ目のカッコでマッチングした「WR250R」が入り、後で変数値を使いまわすことができます。
この機能はとても便利ですが、余計な処理となるため、処理時間がかかってしまいます。
これを避けるために、非格納グループ(Non-capture group | non-capturing parentheses)を使うことができます。ただし正規表現は読みづらくなります。「(?:…)」というように、カッコに続いてクエスチョン+コロンを記述すると、コロンの後ろから閉じるカッコまでが変数に格納されなくなります。