{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "### 5-3-4 先頭と末尾" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "true" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pattern = /\\A\\d{3}-\\d{4}-\\d{4}\\z/\n", "\n", "pattern === '080-1234-5678'" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "false" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pattern === 'Phone: 080-1234-5678'" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "false" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pattern === '080-1234-5678 (mobile)'" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "false\n" ] }, { "data": { "text/plain": [ "true" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lines = \"1234\\nabcd\"\n", "\n", "p(/\\A\\d+\\z/ === lines)\n", "/^\\d+$/ === lines" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 5-3-5 グルーピングと後方参照/部分式呼び出し" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "true\n" ] }, { "data": { "text/plain": [ "\"B\"" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "p(/(B)\\ to\\ \\1/ === 'B to B')\n", "\n", "$1" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "\"123\"" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "/(?[0-9]+)/ === 'abc-123'\n", "\n", "Regexp.last_match[:number]" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "true" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "/(?[0-9]+)[a-c\\-]+\\k/ === '123-abc-123'" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "#" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "/(?[0-9]+)[a-c\\-]+\\k/ === '123-abc-123'" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false, "scrolled": false }, "outputs": [ { "ename": "NoMethodError", "evalue": "undefined method `named_captures' for #", "output_type": "error", "traceback": [ "\u001b[31mNoMethodError\u001b[0m: undefined method `named_captures' for #", "\u001b[37m(pry):41:in `
'\u001b[0m", "\u001b[37m/Users/ariga/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/pry-0.10.3/lib/pry/pry_instance.rb:355:in `eval'\u001b[0m", "\u001b[37m/Users/ariga/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/pry-0.10.3/lib/pry/pry_instance.rb:355:in `evaluate_ruby'\u001b[0m", "\u001b[37m/Users/ariga/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/pry-0.10.3/lib/pry/pry_instance.rb:323:in `handle_line'\u001b[0m", "\u001b[37m/Users/ariga/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/pry-0.10.3/lib/pry/pry_instance.rb:243:in `block (2 levels) in eval'\u001b[0m", "\u001b[37m/Users/ariga/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/pry-0.10.3/lib/pry/pry_instance.rb:242:in `catch'\u001b[0m", "\u001b[37m/Users/ariga/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/pry-0.10.3/lib/pry/pry_instance.rb:242:in `block in eval'\u001b[0m", "\u001b[37m/Users/ariga/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/pry-0.10.3/lib/pry/pry_instance.rb:241:in `catch'\u001b[0m", "\u001b[37m/Users/ariga/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/pry-0.10.3/lib/pry/pry_instance.rb:241:in `eval'\u001b[0m", "\u001b[37m/Users/ariga/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/iruby-0.2.8/lib/iruby/backend.rb:65:in `eval'\u001b[0m", "\u001b[37m/Users/ariga/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/iruby-0.2.8/lib/iruby/backend.rb:12:in `eval'\u001b[0m", "\u001b[37m/Users/ariga/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/iruby-0.2.8/lib/iruby/kernel.rb:87:in `execute_request'\u001b[0m", "\u001b[37m/Users/ariga/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/iruby-0.2.8/lib/iruby/kernel.rb:47:in `dispatch'\u001b[0m", "\u001b[37m/Users/ariga/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/iruby-0.2.8/lib/iruby/kernel.rb:37:in `run'\u001b[0m", "\u001b[37m/Users/ariga/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/iruby-0.2.8/lib/iruby/command.rb:70:in `run_kernel'\u001b[0m", "\u001b[37m/Users/ariga/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/iruby-0.2.8/lib/iruby/command.rb:34:in `run'\u001b[0m", "\u001b[37m/Users/ariga/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/iruby-0.2.8/bin/iruby:5:in `'\u001b[0m", "\u001b[37m/Users/ariga/.rbenv/versions/2.3.0/bin/iruby:23:in `load'\u001b[0m", "\u001b[37m/Users/ariga/.rbenv/versions/2.3.0/bin/iruby:23:in `
'\u001b[0m" ] } ], "source": [ "/(?[0-9]+)(?[a-c\\-]+)\\k/ === '123-abc-123'\n", "Regexp.last_match.named_captures\n", "# 2.4で来る" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "true\n", "false\n" ] }, { "data": { "text/plain": [ "true" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "phone = '080-1234-5678'\n", "\n", "p(/([0-9]+)-\\g<1>-\\g<1>/ === phone)\n", "\n", "p(/([0-9]+)-\\1-\\1/ === phone)\n", "/([0-9]+)-\\1-\\1/ === '080-080-080'" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "true" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "/(?[0-9]+)-\\g-\\g/ === phone" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Ruby 2.3.0", "language": "ruby", "name": "ruby" }, "language_info": { "file_extension": ".rb", "mimetype": "application/x-ruby", "name": "ruby", "version": "2.3.0" }, "widgets": { "state": {}, "version": "1.1.2" } }, "nbformat": 4, "nbformat_minor": 0 }