{"id":1338,"date":"2025-03-24T08:52:19","date_gmt":"2025-03-23T23:52:19","guid":{"rendered":"https:\/\/dexall.co.jp\/articles\/?p=1338"},"modified":"2025-03-24T08:52:19","modified_gmt":"2025-03-23T23:52:19","slug":"%e3%80%90%e4%bf%9d%e5%ad%98%e7%89%88%e3%80%91ruby%e3%81%aematch%e3%83%a1%e3%82%bd%e3%83%83%e3%83%89%e5%ae%8c%e5%85%a8%e3%82%ac%e3%82%a4%e3%83%89%ef%bc%9a%e4%bd%bf%e3%81%84%e6%96%b9%e3%81%a8%e5%ae%9f","status":"publish","type":"post","link":"https:\/\/dexall.co.jp\/articles\/?p=1338","title":{"rendered":"\u3010\u4fdd\u5b58\u7248\u3011Ruby\u306ematch\u30e1\u30bd\u30c3\u30c9\u5b8c\u5168\u30ac\u30a4\u30c9\uff1a\u4f7f\u3044\u65b9\u3068\u5b9f\u8df5\u30c6\u30af\u30cb\u30c3\u30af12\u9078"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\" id=\"i-0\">match\u30e1\u30bd\u30c3\u30c9\u306e\u57fa\u790e\u77e5\u8b58<\/h1>\n\n\n\n<div class=\"toc\"><br \/>\n<b>Warning<\/b>:  Undefined array key \"is_admin\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>116<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_category_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>121<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>128<\/b><br \/>\n    <div id=\"toc_container\" class=\"sgb-toc--bullets js-smooth-scroll\" data-dialog-title=\"\u76ee\u6b21\">\n      <p class=\"toc_title\">\u76ee\u6b21 <\/p>\n      <ul class=\"toc_list\">  <li class=\"first\">    <a href=\"#i-0\">match\u30e1\u30bd\u30c3\u30c9\u306e\u57fa\u790e\u77e5\u8b58<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-1\">match\u30e1\u30bd\u30c3\u30c9\u304c\u89e3\u6c7a\u3059\u308b3\u3064\u306e\u8ab2\u984c<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-2\">\u57fa\u672c\u7684\u306a\u69cb\u6587\u3068\u623b\u308a\u5024\u306e\u7279\u5fb4<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-7\">match\u30e1\u30bd\u30c3\u30c9\u306e\u5b9f\u8df5\u7684\u306a\u4f7f\u3044\u65b9<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-8\">\u6587\u5b57\u5217\u306e\u5b8c\u5168\u4e00\u81f4\u3067\u5931\u6557\u3057\u306a\u3044\u30b3\u30c4<\/a>      <\/li>      <li>        <a href=\"#i-11\">\u90e8\u5206\u4e00\u81f4\u3092\u6d3b\u7528\u3057\u305f\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u5b9f\u88c5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-14\">\u5927\u6587\u5b57\u5c0f\u6587\u5b57\u3092\u8003\u616e\u3057\u305f\u7167\u5408\u30c6\u30af\u30cb\u30c3\u30af<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-16\">\u6b63\u898f\u8868\u73fe\u3068\u306e\u7d44\u307f\u5408\u308f\u305b\u6d3b\u7528\u6cd5<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-17\">\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u306e\u52b9\u7387\u7684\u306a\u5b9f\u88c5\u65b9\u6cd5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-20\">\u30ad\u30e3\u30d7\u30c1\u30e3\u30b0\u30eb\u30fc\u30d7\u3092\u4f7f\u3063\u305f\u9ad8\u5ea6\u306a\u62bd\u51fa\u30c6\u30af\u30cb\u30c3\u30af<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-23\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3068\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u6027\u306e\u6700\u9069\u5316<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-24\">\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u3092\u6291\u3048\u308b\u5b9f\u88c5\u30d1\u30bf\u30fc\u30f3<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-27\">\u30c6\u30b9\u30bf\u30d6\u30eb\u306a\u30b3\u30fc\u30c9\u306e\u66f8\u304d\u65b9<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-30\">\u95a2\u9023\u30e1\u30bd\u30c3\u30c9\u3068\u306e\u4f7f\u3044\u5206\u3051<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-31\">include?\u3001=~\u3001match?\u306e\u9055\u3044\u3068\u4f7f\u3044\u5206\u3051<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-34\">\u30b1\u30fc\u30b9\u5225\u304a\u3059\u3059\u3081\u30e1\u30bd\u30c3\u30c9\u306e\u9078\u3073\u65b9<\/a>      <\/li>    <\/ul>  <\/li>  <li class=\"last\">    <a href=\"#i-37\">\u5b9f\u8df5\u7684\u306a\u30e6\u30fc\u30b9\u30b1\u30fc\u30b9\u96c6<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-38\">\u30ed\u30b0\u89e3\u6790\u3067\u306e\u6d3b\u7528\u4f8b<\/a>      <\/li>      <li>        <a href=\"#i-41\">\u30d5\u30a9\u30fc\u30e0\u5165\u529b\u306e\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u5b9f\u88c5\u4f8b<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-43\">CSV\u30c7\u30fc\u30bf\u51e6\u7406\u3067\u306e\u6d3b\u7528\u4f8b<\/a>      <\/li>    <\/ul>  <\/li><\/ul>\n      <a href=\"#\" class=\"sgb-toc-button js-toc-button\" rel=\"nofollow\" data-open-dialog=\"true\"><i class=\"fa fa-list\"><\/i><span class=\"sgb-toc-button__text\">\u76ee\u6b21\u3078<\/span><\/a>\n    <\/div><\/div><h2 class=\"wp-block-heading\" id=\"i-1\">match\u30e1\u30bd\u30c3\u30c9\u304c\u89e3\u6c7a\u3059\u308b3\u3064\u306e\u8ab2\u984c<\/h2>\n\n\n\n<p>Ruby\u306e\u6587\u5b57\u5217\u51e6\u7406\u306b\u304a\u3044\u3066\u3001<code>match<\/code>\u30e1\u30bd\u30c3\u30c9\u306f\u4ee5\u4e0b\u306e3\u3064\u306e\u4e3b\u8981\u306a\u8ab2\u984c\u3092\u52b9\u679c\u7684\u306b\u89e3\u6c7a\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30d1\u30bf\u30fc\u30f3\u306b\u57fa\u3065\u304f\u6587\u5b57\u5217\u306e\u691c\u8a3c<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u306e\u78ba\u8a8d\uff08\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3001\u96fb\u8a71\u756a\u53f7\u306a\u3069\uff09<\/li>\n\n\n\n<li>\u5165\u529b\u5024\u306e\u59a5\u5f53\u6027\u30c1\u30a7\u30c3\u30af<\/li>\n\n\n\n<li>\u7279\u5b9a\u306e\u30d1\u30bf\u30fc\u30f3\u3092\u542b\u3080\u6587\u5b57\u5217\u306e\u8b58\u5225<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u5fc5\u8981\u306a\u60c5\u5831\u306e\u62bd\u51fa<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u6587\u5b57\u5217\u304b\u3089\u306e\u7279\u5b9a\u90e8\u5206\u306e\u5207\u308a\u51fa\u3057<\/li>\n\n\n\n<li>\u69cb\u9020\u5316\u3055\u308c\u3066\u3044\u306a\u3044\u30c6\u30ad\u30b9\u30c8\u304b\u3089\u306e\u30c7\u30fc\u30bf\u62bd\u51fa<\/li>\n\n\n\n<li>\u8907\u6570\u306e\u95a2\u9023\u60c5\u5831\u306e\u4e00\u62ec\u53d6\u5f97<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u67d4\u8edf\u306a\u6587\u5b57\u5217\u7167\u5408<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5b8c\u5168\u4e00\u81f4\u4ee5\u5916\u306e\u67d4\u8edf\u306a\u30de\u30c3\u30c1\u30f3\u30b0<\/li>\n\n\n\n<li>\u5927\u6587\u5b57\u5c0f\u6587\u5b57\u3092\u533a\u5225\u3059\u308b\/\u3057\u306a\u3044\u7167\u5408<\/li>\n\n\n\n<li>\u8907\u96d1\u306a\u30d1\u30bf\u30fc\u30f3\u306b\u57fa\u3065\u304f\u691c\u7d22<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-2\">\u57fa\u672c\u7684\u306a\u69cb\u6587\u3068\u623b\u308a\u5024\u306e\u7279\u5fb4<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-3\">\u57fa\u672c\u69cb\u6587<\/h3>\n\n\n\n<p><code>match<\/code>\u30e1\u30bd\u30c3\u30c9\u306b\u306f\u4e3b\u306b2\u3064\u306e\u4f7f\u7528\u65b9\u6cd5\u304c\u3042\u308a\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u6587\u5b57\u5217\u30e1\u30bd\u30c3\u30c9\u3068\u3057\u3066\u306e\u4f7f\u7528\nstring.match(pattern)\n\n# Regexp\u30af\u30e9\u30b9\u30e1\u30bd\u30c3\u30c9\u3068\u3057\u3066\u306e\u4f7f\u7528\npattern.match(string)<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-4\">\u623b\u308a\u5024\u306e\u7279\u5fb4<\/h3>\n\n\n\n<p>match\u30e1\u30bd\u30c3\u30c9\u306e\u623b\u308a\u5024\u306f\u4ee5\u4e0b\u306e\u7279\u5fb4\u3092\u6301\u3061\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30de\u30c3\u30c1\u30f3\u30b0\u6210\u529f\u6642<\/strong>\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">text = \"Hello, Ruby 2.7.0\"\nresult = text.match(\/Ruby (\\d+\\.\\d+\\.\\d+)\/)\n\n# MatchData\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u8fd4\u3055\u308c\u308b\nputs result.class         # =&gt; MatchData\nputs result[0]           # =&gt; \"Ruby 2.7.0\"  \uff08\u30de\u30c3\u30c1\u3057\u305f\u5168\u4f53\uff09\nputs result[1]           # =&gt; \"2.7.0\"       \uff08\u6700\u521d\u306e\u30ad\u30e3\u30d7\u30c1\u30e3\u30b0\u30eb\u30fc\u30d7\uff09\nputs result.pre_match    # =&gt; \"Hello, \"     \uff08\u30de\u30c3\u30c1\u524d\u306e\u6587\u5b57\u5217\uff09\nputs result.post_match   # =&gt; \"\"            \uff08\u30de\u30c3\u30c1\u5f8c\u306e\u6587\u5b57\u5217\uff09<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u30de\u30c3\u30c1\u30f3\u30b0\u5931\u6557\u6642<\/strong>\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">text = \"Hello, Python\"\nresult = text.match(\/Ruby\/)\n\n# nil\u304c\u8fd4\u3055\u308c\u308b\nputs result              # =&gt; nil<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-5\">\u5b9f\u7528\u7684\u306a\u4f7f\u7528\u4f8b<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u540d\u524d\u4ed8\u304d\u30ad\u30e3\u30d7\u30c1\u30e3\u306e\u6d3b\u7528<\/strong>\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">text = \"Created at: 2024-03-15 by: John\"\nif result = text.match(\/Created at: (?&lt;date&gt;[\\d-]+) by: (?&lt;name&gt;\\w+)\/)\n  puts result[:date]     # =&gt; \"2024-03-15\"\n  puts result[:name]     # =&gt; \"John\"\nend<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u30aa\u30d7\u30b7\u30e7\u30f3\u6307\u5b9a<\/strong>\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u5927\u6587\u5b57\u5c0f\u6587\u5b57\u3092\u533a\u5225\u3057\u306a\u3044\u691c\u7d22\ntext = \"RUBY is Ruby\"\nresult = text.match(\/ruby\/i)\nputs result[0]           # =&gt; \"RUBY\"\n\n# \u30de\u30eb\u30c1\u30e9\u30a4\u30f3\u30e2\u30fc\u30c9\ntext = \"Line1\\nLine2\"\nresult = text.match(\/^Line\\d$\/m)\nputs result[0]           # =&gt; \"Line2\"<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-6\">\u6ce8\u610f\u70b9\u3068\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>nil\u30c1\u30a7\u30c3\u30af\u306e\u91cd\u8981\u6027<\/strong>\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u63a8\u5968\u3055\u308c\u308b\u66f8\u304d\u65b9\nif result = text.match(\/pattern\/)\n  # \u30de\u30c3\u30c1\u30f3\u30b0\u6210\u529f\u6642\u306e\u51e6\u7406\nelse\n  # \u30de\u30c3\u30c1\u30f3\u30b0\u5931\u6557\u6642\u306e\u51e6\u7406\nend<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3078\u306e\u914d\u616e<\/strong>\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u5358\u7d14\u306a\u5b58\u5728\u30c1\u30a7\u30c3\u30af\u306a\u3089match?\u3092\u4f7f\u7528\ntext = \"Hello, Ruby\"\nputs text.match?(\/Ruby\/)  # =&gt; true \uff08\u3088\u308a\u9ad8\u901f\uff09<\/pre>\n\n\n\n<p>\u3053\u306e\u3088\u3046\u306b\u3001<code>match<\/code>\u30e1\u30bd\u30c3\u30c9\u306f\u67d4\u8edf\u306a\u6587\u5b57\u5217\u51e6\u7406\u3092\u53ef\u80fd\u306b\u3059\u308b\u5f37\u529b\u306a\u30c4\u30fc\u30eb\u3067\u3059\u3002\u57fa\u672c\u3092\u62bc\u3055\u3048\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u8907\u96d1\u306a\u51e6\u7406\u3082\u52b9\u7387\u7684\u306b\u5b9f\u88c5\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"i-7\">match\u30e1\u30bd\u30c3\u30c9\u306e\u5b9f\u8df5\u7684\u306a\u4f7f\u3044\u65b9<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-8\">\u6587\u5b57\u5217\u306e\u5b8c\u5168\u4e00\u81f4\u3067\u5931\u6557\u3057\u306a\u3044\u30b3\u30c4<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-9\">\u5883\u754c\u6761\u4ef6\u306e\u9069\u5207\u306a\u51e6\u7406<\/h3>\n\n\n\n<p>\u6587\u5b57\u5217\u306e\u5b8c\u5168\u4e00\u81f4\u3092\u5b9f\u88c5\u3059\u308b\u969b\u306f\u3001\u4ee5\u4e0b\u306e\u30dd\u30a4\u30f3\u30c8\u306b\u6ce8\u610f\u304c\u5fc5\u8981\u3067\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u826f\u304f\u306a\u3044\u5b9f\u88c5\u4f8b\ndef validate_username(username)\n  username.match(\/[a-zA-Z0-9]+\/)\nend\n\n# \u63a8\u5968\u3055\u308c\u308b\u5b9f\u88c5\u4f8b\ndef validate_username(username)\n  # \\A\u3067\u884c\u982d\u3001\\z\u3067\u884c\u672b\u3092\u660e\u793a\u7684\u306b\u6307\u5b9a\n  username.match(\/\\A[a-zA-Z0-9]+\\z\/)\nend\n\n# \u52d5\u4f5c\u78ba\u8a8d\nputs validate_username(\"user123\")        # =&gt; \u30de\u30c3\u30c1\nputs validate_username(\"user123\\n\")      # =&gt; nil\uff08\u6539\u884c\u3092\u542b\u3080\u305f\u3081\u30de\u30c3\u30c1\u3057\u306a\u3044\uff09\nputs validate_username(\"user@123\")       # =&gt; nil\uff08\u4e0d\u6b63\u306a\u6587\u5b57\u3092\u542b\u3080\u305f\u3081\u30de\u30c3\u30c1\u3057\u306a\u3044\uff09<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-10\">nil\u306e\u5b89\u5168\u306a\u51e6\u7406<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u5b89\u5168\u306anil\u30c1\u30a7\u30c3\u30af\u306e\u5b9f\u88c5\ndef extract_info(text)\n  # &amp;.\u6f14\u7b97\u5b50\u3092\u4f7f\u7528\u3057\u3066nil\u5b89\u5168\u306a\u51e6\u7406\u3092\u5b9f\u88c5\n  result = text&amp;.match(\/\\A(\\w+):(\\d+)\\z\/)\n  {\n    name: result&amp;.[](1),\n    value: result&amp;.[](2)&amp;.to_i\n  }\nend\n\n# \u4f7f\u7528\u4f8b\nputs extract_info(\"score:85\")            # =&gt; {:name=&gt;\"score\", :value=&gt;85}\nputs extract_info(nil)                   # =&gt; {:name=&gt;nil, :value=&gt;nil}<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-11\">\u90e8\u5206\u4e00\u81f4\u3092\u6d3b\u7528\u3057\u305f\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u5b9f\u88c5<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-12\">\u67d4\u8edf\u306a\u691c\u7d22\u30d1\u30bf\u30fc\u30f3<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class UserInput\n  def self.validate_email(email)\n    pattern = \/\\A[\\w+\\-.]+@[a-z\\d\\-.]+\\.[a-z]+\\z\/i\n    result = email&amp;.match(pattern)\n    {\n      valid: !result.nil?,\n      local_part: result&amp;.[](1),\n      domain: result&amp;.[](2)\n    }\n  end\n\n  def self.validate_phone(phone)\n    # \u56fd\u969b\u96fb\u8a71\u756a\u53f7\u5f62\u5f0f\u3082\u8003\u616e\u3057\u305f\u30d1\u30bf\u30fc\u30f3\n    pattern = \/\\A(\\+?\\d{1,3})?[-.\\s]?(\\d{2,4})[-.\\s]?(\\d{2,4})[-.\\s]?(\\d{4})\\z\/\n    result = phone&amp;.match(pattern)\n    {\n      valid: !result.nil?,\n      country_code: result&amp;.[](1),\n      number: [result&amp;.[](2), result&amp;.[](3), result&amp;.[](4)].compact.join('-')\n    }\n  end\nend\n\n# \u4f7f\u7528\u4f8b\nputs UserInput.validate_email(\"user@example.com\")\nputs UserInput.validate_phone(\"+81-90-1234-5678\")<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-13\">\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u751f\u6210<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class ValidationError\n  def self.generate_message(input, pattern_type)\n    patterns = {\n      email: \/\\A[\\w+\\-.]+@[a-z\\d\\-.]+\\.[a-z]+\\z\/i,\n      phone: \/\\A(\\+?\\d{1,3})?[-.\\s]?(\\d{2,4})[-.\\s]?(\\d{2,4})[-.\\s]?(\\d{4})\\z\/,\n      username: \/\\A[a-zA-Z0-9_]{3,20}\\z\/\n    }\n\n    pattern = patterns[pattern_type]\n    return \"\u672a\u5b9a\u7fa9\u306e\u30d1\u30bf\u30fc\u30f3\u30bf\u30a4\u30d7\u3067\u3059\" unless pattern\n\n    unless input&amp;.match?(pattern)\n      case pattern_type\n      when :email\n        \"\u6b63\u3057\u3044\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u5f62\u5f0f\u3067\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\"\n      when :phone\n        \"\u6b63\u3057\u3044\u96fb\u8a71\u756a\u53f7\u5f62\u5f0f\u3067\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\"\n      when :username\n        \"\u30e6\u30fc\u30b6\u30fc\u540d\u306f3-20\u6587\u5b57\u306e\u534a\u89d2\u82f1\u6570\u5b57\u3068\u30a2\u30f3\u30c0\u30fc\u30b9\u30b3\u30a2\u306e\u307f\u4f7f\u7528\u53ef\u80fd\u3067\u3059\"\n      end\n    end\n  end\nend<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-14\">\u5927\u6587\u5b57\u5c0f\u6587\u5b57\u3092\u8003\u616e\u3057\u305f\u7167\u5408\u30c6\u30af\u30cb\u30c3\u30af<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-15\">\u5927\u6587\u5b57\u5c0f\u6587\u5b57\u3092\u533a\u5225\u3059\u308b\u5b9f\u88c5<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class StringMatcher\n  def self.case_sensitive_match(text, pattern)\n    result = text.match(\/#{Regexp.escape(pattern)}\/)\n    {\n      matched: !result.nil?,\n      position: result&amp;.begin(0),\n      matched_text: result&amp;.[](0)\n    }\n  end\n\n  def self.case_insensitive_match(text, pattern)\n    result = text.match(\/#{Regexp.escape(pattern)}\/i)\n    {\n      matched: !result.nil?,\n      position: result&amp;.begin(0),\n      matched_text: result&amp;.[](0)\n    }\n  end\nend\n\n# \u4f7f\u7528\u4f8b\ntext = \"Ruby on Rails\"\nputs StringMatcher.case_sensitive_match(text, \"ruby\")    # =&gt; {:matched=&gt;false, :position=&gt;nil, :matched_text=&gt;nil}\nputs StringMatcher.case_insensitive_match(text, \"ruby\")  # =&gt; {:matched=&gt;true, :position=&gt;0, :matched_text=&gt;\"Ruby\"}<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u5b9f\u88c5\u30d1\u30bf\u30fc\u30f3\u3092\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u5805\u7262\u3067\u4fdd\u5b88\u6027\u306e\u9ad8\u3044\u30b3\u30fc\u30c9\u3092\u66f8\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u7279\u306b\u3001\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u3084\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u306e\u51e6\u7406\u3067\u306f\u3001\u3053\u308c\u3089\u306e\u30c6\u30af\u30cb\u30c3\u30af\u3092\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u4fe1\u983c\u6027\u306e\u9ad8\u3044\u5b9f\u88c5\u304c\u53ef\u80fd\u3068\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"i-16\">\u6b63\u898f\u8868\u73fe\u3068\u306e\u7d44\u307f\u5408\u308f\u305b\u6d3b\u7528\u6cd5<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-17\">\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u306e\u52b9\u7387\u7684\u306a\u5b9f\u88c5\u65b9\u6cd5<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-18\">\u57fa\u672c\u7684\u306a\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class PatternMatcher\n  # \u8907\u6570\u306e\u30d1\u30bf\u30fc\u30f3\u3092\u52b9\u7387\u7684\u306b\u7ba1\u7406\n  PATTERNS = {\n    date: \/\\A(\\d{4})-(\\d{2})-(\\d{2})\\z\/,\n    time: \/\\A(\\d{2}):(\\d{2}):(\\d{2})\\z\/,\n    datetime: \/\\A(\\d{4})-(\\d{2})-(\\d{2}) (\\d{2}):(\\d{2}):(\\d{2})\\z\/\n  }.freeze\n\n  def self.match_pattern(text, pattern_type)\n    pattern = PATTERNS[pattern_type]\n    return { valid: false, message: \"\u672a\u5b9a\u7fa9\u306e\u30d1\u30bf\u30fc\u30f3\u3067\u3059\" } unless pattern\n\n    result = text&amp;.match(pattern)\n    {\n      valid: !result.nil?,\n      matches: result&amp;.to_a&amp;.drop(1),  # \u6700\u521d\u306e\u5b8c\u5168\u30de\u30c3\u30c1\u3092\u9664\u5916\n      original: text\n    }\n  end\nend\n\n# \u4f7f\u7528\u4f8b\nputs PatternMatcher.match_pattern(\"2024-03-15\", :date)\n# =&gt; {:valid=&gt;true, :matches=&gt;[\"2024\", \"03\", \"15\"], :original=&gt;\"2024-03-15\"}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-19\">\u8907\u6570\u30d1\u30bf\u30fc\u30f3\u306e\u7d44\u307f\u5408\u308f\u305b<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class AdvancedMatcher\n  def self.match_multiple_patterns(text, patterns)\n    results = patterns.map do |pattern|\n      result = text.match(pattern)\n      next nil unless result\n      {\n        pattern: pattern.source,\n        matched: result[0],\n        position: result.begin(0)\n      }\n    end.compact\n\n    {\n      matched_count: results.length,\n      matches: results,\n      original: text\n    }\n  end\nend\n\n# \u4f7f\u7528\u4f8b\npatterns = [\/\\d+\/, \/[A-Z]+\/, \/[a-z]+\/]\ntext = \"ABC123def\"\nputs AdvancedMatcher.match_multiple_patterns(text, patterns)<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-20\">\u30ad\u30e3\u30d7\u30c1\u30e3\u30b0\u30eb\u30fc\u30d7\u3092\u4f7f\u3063\u305f\u9ad8\u5ea6\u306a\u62bd\u51fa\u30c6\u30af\u30cb\u30c3\u30af<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-21\">\u540d\u524d\u4ed8\u304d\u30ad\u30e3\u30d7\u30c1\u30e3\u306e\u6d3b\u7528<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class DataExtractor\n  LOG_PATTERN = \/\n    \\A\n    (?&lt;timestamp&gt;\\d{4}-\\d{2}-\\d{2}\\s\\d{2}:\\d{2}:\\d{2})\\s\n    \\[(?&lt;level&gt;\\w+)\\]\\s\n    (?&lt;message&gt;.*?)\n    (?&lt;details&gt;\\{.*\\})?\n    \\z\n  \/x\n\n  def self.parse_log(log_line)\n    result = log_line.match(LOG_PATTERN)\n    return { valid: false } unless result\n\n    {\n      valid: true,\n      timestamp: result[:timestamp],\n      level: result[:level],\n      message: result[:message],\n      details: result[:details]\n    }\n  end\nend\n\n# \u4f7f\u7528\u4f8b\nlog = \"2024-03-15 10:20:30 [ERROR] Database connection failed {\\\"code\\\":500}\"\nputs DataExtractor.parse_log(log)<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-22\">\u6761\u4ef6\u4ed8\u304d\u30ad\u30e3\u30d7\u30c1\u30e3\u30b0\u30eb\u30fc\u30d7<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class ConditionalMatcher\n  def self.parse_phone_number(number)\n    pattern = \/\n      \\A\n      (?:(?&lt;country&gt;\\+\\d{1,3})\\s)?  # \u56fd\u756a\u53f7\uff08\u30aa\u30d7\u30b7\u30e7\u30f3\uff09\n      (?&lt;area&gt;\\d{2,4})              # \u5e02\u5916\u5c40\u756a\n      [-\\s]?\n      (?&lt;local&gt;\\d{2,4})             # \u5e02\u5185\u5c40\u756a\n      [-\\s]?\n      (?&lt;number&gt;\\d{4})              # \u52a0\u5165\u8005\u756a\u53f7\n      \\z\n    \/x\n\n    result = number.match(pattern)\n    return { valid: false } unless result\n\n    {\n      valid: true,\n      country_code: result[:country] || '+81',  # \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\n      area_code: result[:area],\n      local_number: result[:local],\n      subscriber_number: result[:number],\n      formatted: format_number(result)\n    }\n  end\n\n  private\n\n  def self.format_number(match_data)\n    [\n      match_data[:country],\n      match_data[:area],\n      match_data[:local],\n      match_data[:number]\n    ].compact.join('-')\n  end\nend\n\n# \u4f7f\u7528\u4f8b\nputs ConditionalMatcher.parse_phone_number(\"+81 90-1234-5678\")\nputs ConditionalMatcher.parse_phone_number(\"03-1234-5678\")<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u30c6\u30af\u30cb\u30c3\u30af\u3092\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u8907\u96d1\u306a\u30c6\u30ad\u30b9\u30c8\u51e6\u7406\u3084\u9ad8\u5ea6\u306a\u30c7\u30fc\u30bf\u62bd\u51fa\u3092\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002\u7279\u306b\u3001\u30ed\u30b0\u89e3\u6790\u3084\u30c7\u30fc\u30bf\u5909\u63db\u51e6\u7406\u3067\u306f\u3001\u3053\u308c\u3089\u306e\u30d1\u30bf\u30fc\u30f3\u304c\u975e\u5e38\u306b\u6709\u7528\u3067\u3059\u3002\u540d\u524d\u4ed8\u304d\u30ad\u30e3\u30d7\u30c1\u30e3\u30b0\u30eb\u30fc\u30d7\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u30b3\u30fc\u30c9\u306e\u53ef\u8aad\u6027\u3082\u5927\u5e45\u306b\u5411\u4e0a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"i-23\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3068\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u6027\u306e\u6700\u9069\u5316<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-24\">\u30e1\u30e2\u30ea\u4f7f\u7528\u91cf\u3092\u6291\u3048\u308b\u5b9f\u88c5\u30d1\u30bf\u30fc\u30f3<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-25\">\u4e8b\u524d\u30b3\u30f3\u30d1\u30a4\u30eb\u306b\u3088\u308b\u6700\u9069\u5316<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class OptimizedMatcher\n  # \u30af\u30e9\u30b9\u5909\u6570\u3068\u3057\u3066\u6b63\u898f\u8868\u73fe\u30d1\u30bf\u30fc\u30f3\u3092\u4e8b\u524d\u30b3\u30f3\u30d1\u30a4\u30eb\n  @@EMAIL_PATTERN = Regexp.compile('\\A[\\w+\\-.]+@[a-z\\d\\-.]+\\.[a-z]+\\z', Regexp::IGNORECASE)\n\n  def self.validate_email(email)\n    # \u30b3\u30f3\u30d1\u30a4\u30eb\u6e08\u307f\u30d1\u30bf\u30fc\u30f3\u3092\u4f7f\u7528\n    !!email&amp;.match(@@EMAIL_PATTERN)\n  end\n\n  # \u5927\u91cf\u306e\u30c6\u30ad\u30b9\u30c8\u3092\u51e6\u7406\u3059\u308b\u5834\u5408\u306e\u6700\u9069\u5316\u4f8b\n  def self.process_large_text(text, pattern)\n    text.each_line.lazy.select { |line| \n      line.match?(pattern)  # match?\u3092\u4f7f\u7528\u3057\u3066MatchData\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u751f\u6210\u3057\u306a\u3044\n    }\n  end\nend\n\n# \u30d9\u30f3\u30c1\u30de\u30fc\u30af\u4f8b\nrequire 'benchmark'\nemails = Array.new(10000) { \"user#{_1}@example.com\" }\n\nBenchmark.bm do |x|\n  x.report(\"\u6700\u9069\u5316\u306a\u3057:\") {\n    emails.each { |email| email.match(\/\\A[\\w+\\-.]+@[a-z\\d\\-.]+\\.[a-z]+\\z\/i) }\n  }\n  x.report(\"\u6700\u9069\u5316\u3042\u308a:\") {\n    emails.each { |email| OptimizedMatcher.validate_email(email) }\n  }\nend<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-26\">\u30e1\u30e2\u30ea\u52b9\u7387\u306e\u826f\u3044\u5b9f\u88c5\u30d1\u30bf\u30fc\u30f3<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class MemoryEfficientMatcher\n  # \u30a4\u30c6\u30ec\u30fc\u30bf\u3092\u4f7f\u7528\u3057\u305f\u5927\u91cf\u30c6\u30ad\u30b9\u30c8\u51e6\u7406\n  def self.find_matches(file_path, pattern)\n    Enumerator.new do |yielder|\n      File.foreach(file_path) do |line|\n        if result = line.match(pattern)\n          yielder &lt;&lt; result[0]\n        end\n      end\n    end\n  end\n\n  # \u90e8\u5206\u6587\u5b57\u5217\u3092\u4f7f\u7528\u3057\u305f\u52b9\u7387\u7684\u306a\u51e6\u7406\n  def self.extract_data(text)\n    return [] unless text\n\n    text.scan(\/\\d{4}-\\d{2}-\\d{2}\/).map do |date|\n      date.dup.freeze  # \u4e0d\u8981\u306a\u30e1\u30e2\u30ea\u5272\u308a\u5f53\u3066\u3092\u9632\u3050\n    end\n  end\nend\n\n# \u4f7f\u7528\u4f8b\nFile.write('sample.txt', \"2024-03-15\\n2024-03-16\\n2024-03-17\")\nmatches = MemoryEfficientMatcher.find_matches('sample.txt', \/\\d{4}-\\d{2}-\\d{2}\/)\nmatches.each { |match| puts match }<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-27\">\u30c6\u30b9\u30bf\u30d6\u30eb\u306a\u30b3\u30fc\u30c9\u306e\u66f8\u304d\u65b9<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-28\">\u4f9d\u5b58\u6027\u306e\u5206\u96e2<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class LogParser\n  attr_reader :pattern\n\n  def initialize(pattern = nil)\n    @pattern = pattern || \/\\A\\[(?&lt;level&gt;\\w+)\\] (?&lt;message&gt;.*)\\z\/\n  end\n\n  def parse(log_line)\n    result = log_line.match(pattern)\n    return nil unless result\n\n    {\n      level: result[:level],\n      message: result[:message]\n    }\n  end\nend\n\n# \u30c6\u30b9\u30c8\u30b3\u30fc\u30c9\u4f8b\nrequire 'minitest\/autorun'\n\nclass LogParserTest &lt; Minitest::Test\n  def setup\n    @parser = LogParser.new\n  end\n\n  def test_valid_log_line\n    result = @parser.parse(\"[ERROR] Database connection failed\")\n    assert_equal \"ERROR\", result[:level]\n    assert_equal \"Database connection failed\", result[:message]\n  end\n\n  def test_invalid_log_line\n    result = @parser.parse(\"Invalid log format\")\n    assert_nil result\n  end\nend<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-29\">\u30ab\u30b9\u30bf\u30e0\u30de\u30c3\u30c1\u30e3\u30fc\u306e\u5b9f\u88c5<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">module CustomMatchers\n  class StringValidator\n    def initialize(rules = {})\n      @rules = rules\n    end\n\n    def validate(text)\n      results = @rules.map do |rule_name, pattern|\n        {\n          rule: rule_name,\n          valid: text.match?(pattern),\n          pattern: pattern.source\n        }\n      end\n\n      {\n        valid: results.all? { |r| r[:valid] },\n        details: results\n      }\n    end\n  end\nend\n\n# \u4f7f\u7528\u4f8b\u3068\u30c6\u30b9\u30c8\nvalidator = CustomMatchers::StringValidator.new(\n  no_special_chars: \/\\A[\\w\\s]+\\z\/,\n  min_length: \/.{8,}\/,\n  has_number: \/\\d\/\n)\n\n# \u30c6\u30b9\u30c8\u5bb9\u6613\u306a\u5b9f\u88c5\ndef test_password_validation\n  result = validator.validate(\"password123\")\n  assert result[:valid]\n  assert_equal 3, result[:details].length\nend<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u6700\u9069\u5316\u30c6\u30af\u30cb\u30c3\u30af\u3092\u9069\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u30e1\u30e2\u30ea\u52b9\u7387\u304c\u826f\u304f\u3001\u4fdd\u5b88\u6027\u306e\u9ad8\u3044\u30b3\u30fc\u30c9\u3092\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002\u7279\u306b\u5927\u91cf\u306e\u30c7\u30fc\u30bf\u3092\u51e6\u7406\u3059\u308b\u5834\u5408\u3084\u3001\u30c6\u30b9\u30c8\u304c\u91cd\u8981\u306a\u5b9f\u88c5\u3067\u306f\u3001\u3053\u308c\u3089\u306e\u30d1\u30bf\u30fc\u30f3\u304c\u975e\u5e38\u306b\u6709\u52b9\u3067\u3059\u3002\u307e\u305f\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306e\u6700\u9069\u5316\u3068\u4fdd\u5b88\u6027\u306e\u4e21\u7acb\u3092\u56f3\u308b\u3053\u3068\u3067\u3001\u9577\u671f\u7684\u306a\u30b3\u30fc\u30c9\u306e\u54c1\u8cea\u7dad\u6301\u304c\u53ef\u80fd\u3068\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"i-30\">\u95a2\u9023\u30e1\u30bd\u30c3\u30c9\u3068\u306e\u4f7f\u3044\u5206\u3051<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-31\">include?\u3001=~\u3001match?\u306e\u9055\u3044\u3068\u4f7f\u3044\u5206\u3051<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-32\">\u5404\u30e1\u30bd\u30c3\u30c9\u306e\u7279\u5fb4\u6bd4\u8f03<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class StringMatcherComparison\n  def self.compare_methods\n    text = \"Hello, Ruby Programming!\"\n    pattern = \/Ruby\/\n\n    # include?\u306b\u3088\u308b\u691c\u7d22\n    include_result = text.include?(\"Ruby\")\n\n    # =~\u306b\u3088\u308b\u691c\u7d22\n    spaceship_result = (text =~ pattern)\n\n    # match?\u306b\u3088\u308b\u691c\u7d22\n    match_result = text.match?(pattern)\n\n    # match\u306b\u3088\u308b\u691c\u7d22\n    match_object = text.match(pattern)\n\n    {\n      include: {\n        result: include_result,\n        features: \"\u5358\u7d14\u306a\u6587\u5b57\u5217\u5305\u542b\u30c1\u30a7\u30c3\u30af\u3001\u6b63\u898f\u8868\u73fe\u4e0d\u53ef\",\n        performance: \"\u6700\u3082\u9ad8\u901f\",\n        memory: \"\u6700\u5c0f\"\n      },\n      spaceship: {\n        result: spaceship_result,\n        features: \"\u4f4d\u7f6e\u60c5\u5831\u306e\u53d6\u5f97\u3001\u6b63\u898f\u8868\u73fe\u53ef\",\n        performance: \"\u4e2d\u7a0b\u5ea6\",\n        memory: \"\u4f4e\"\n      },\n      match_query: {\n        result: match_result,\n        features: \"\u6b63\u898f\u8868\u73fe\u30de\u30c3\u30c1\u30f3\u30b0\u306e\u307f\",\n        performance: \"\u9ad8\u901f\",\n        memory: \"\u6700\u5c0f\"\n      },\n      match: {\n        result: !!match_object,\n        features: \"\u8a73\u7d30\u306a\u30de\u30c3\u30c1\u60c5\u5831\u3001\u6b63\u898f\u8868\u73fe\u53ef\",\n        performance: \"\u4f4e\u901f\",\n        memory: \"\u9ad8\"\n      }\n    }\n  end\n\n  # \u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6bd4\u8f03\n  def self.benchmark_comparison\n    require 'benchmark'\n    text = \"Hello, Ruby Programming!\"\n    pattern = \/Ruby\/\n    str_pattern = \"Ruby\"\n    n = 100_000\n\n    Benchmark.bm(10) do |x|\n      x.report(\"include?:\") { n.times { text.include?(str_pattern) } }\n      x.report(\"=~:\") { n.times { text =~ pattern } }\n      x.report(\"match?:\") { n.times { text.match?(pattern) } }\n      x.report(\"match:\") { n.times { text.match(pattern) } }\n    end\n  end\nend<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-33\">\u30e1\u30bd\u30c3\u30c9\u3054\u3068\u306e\u30e6\u30fc\u30b9\u30b1\u30fc\u30b9<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>include?\u306e\u9069\u7528\u5834\u9762<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">   def check_simple_inclusion(text, keyword)\n     # \u5358\u7d14\u306a\u6587\u5b57\u5217\u5305\u542b\u30c1\u30a7\u30c3\u30af\n     if text.include?(keyword)\n       \"#{keyword}\u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f\"\n     else\n       \"#{keyword}\u306f\u542b\u307e\u308c\u3066\u3044\u307e\u305b\u3093\"\n     end\n   end<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>=~\u306e\u9069\u7528\u5834\u9762<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">   def find_pattern_position(text, pattern)\n     # \u30d1\u30bf\u30fc\u30f3\u306e\u4f4d\u7f6e\u3092\u53d6\u5f97\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\n     if position = (text =~ pattern)\n       \"\u30d1\u30bf\u30fc\u30f3\u304c#{position}\u306e\u4f4d\u7f6e\u3067\u898b\u3064\u304b\u308a\u307e\u3057\u305f\"\n     else\n       \"\u30d1\u30bf\u30fc\u30f3\u306f\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\"\n     end\n   end<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>match?\u306e\u9069\u7528\u5834\u9762<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">   def validate_format(text, pattern)\n     # \u5358\u7d14\u306a\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u306e\u78ba\u8a8d\n     if text.match?(pattern)\n       \"\u6b63\u3057\u3044\u5f62\u5f0f\u3067\u3059\"\n     else\n       \"\u4e0d\u6b63\u306a\u5f62\u5f0f\u3067\u3059\"\n     end\n   end<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-34\">\u30b1\u30fc\u30b9\u5225\u304a\u3059\u3059\u3081\u30e1\u30bd\u30c3\u30c9\u306e\u9078\u3073\u65b9<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-35\">\u30b7\u30ca\u30ea\u30aa\u5225\u306e\u6700\u9069\u306a\u30e1\u30bd\u30c3\u30c9\u9078\u629e<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class MethodSelector\n  def self.select_method(scenario)\n    case scenario\n    when :simple_search\n      {\n        recommended: :include?,\n        reason: \"\u5358\u7d14\u306a\u6587\u5b57\u5217\u691c\u7d22\u3067\u6700\u3082\u9ad8\u901f\",\n        example: %q{\n          text = \"Hello, World\"\n          text.include?(\"Hello\")  # =&gt; true\n        }\n      }\n    when :pattern_position\n      {\n        recommended: :=~,\n        reason: \"\u4f4d\u7f6e\u60c5\u5831\u304c\u5fc5\u8981\u306a\u5834\u5408\u306b\u6700\u9069\",\n        example: %q{\n          text = \"Hello, World\"\n          text =~ \/World\/  # =&gt; 7\n        }\n      }\n    when :validation\n      {\n        recommended: :match?,\n        reason: \"\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u3067\u306e\u9ad8\u901f\u306a\u5224\u5b9a\u306b\u6700\u9069\",\n        example: %q{\n          email = \"user@example.com\"\n          email.match?(\/\\A[\\w+\\-.]+@[a-z\\d\\-.]+\\.[a-z]+\\z\/i)  # =&gt; true\n        }\n      }\n    when :data_extraction\n      {\n        recommended: :match,\n        reason: \"\u8a73\u7d30\u306a\u30de\u30c3\u30c1\u60c5\u5831\u304c\u5fc5\u8981\u306a\u5834\u5408\u306b\u6700\u9069\",\n        example: %q{\n          text = \"Score: 85\"\n          if result = text.match(\/Score: (\\d+)\/)\n            result[1]  # =&gt; \"85\"\n          end\n        }\n      }\n    end\n  end\nend\n\n# \u4f7f\u7528\u4f8b\nputs MethodSelector.select_method(:simple_search)\nputs MethodSelector.select_method(:data_extraction)<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-36\">\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u8003\u616e\u4e8b\u9805<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class PerformanceGuide\n  def self.recommend_for_performance(data_size)\n    case data_size\n    when :small  # 1000\u4ef6\u672a\u6e80\n      {\n        recommended: :match,\n        reason: \"\u5c11\u91cf\u30c7\u30fc\u30bf\u3067\u306f\u6a5f\u80fd\u6027\u3092\u512a\u5148\"\n      }\n    when :medium  # 1000-10000\u4ef6\n      {\n        recommended: :match?,\n        reason: \"\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3068\u6a5f\u80fd\u6027\u306e\u30d0\u30e9\u30f3\u30b9\"\n      }\n    when :large  # 10000\u4ef6\u4ee5\u4e0a\n      {\n        recommended: :include?,\n        reason: \"\u5927\u91cf\u30c7\u30fc\u30bf\u3067\u306f\u51e6\u7406\u901f\u5ea6\u3092\u512a\u5148\"\n      }\n    end\n  end\nend<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u30e1\u30bd\u30c3\u30c9\u306e\u9069\u5207\u306a\u4f7f\u3044\u5206\u3051\u306b\u3088\u308a\u3001\u3088\u308a\u52b9\u7387\u7684\u3067\u4fdd\u5b88\u6027\u306e\u9ad8\u3044\u30b3\u30fc\u30c9\u3092\u5b9f\u88c5\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u7279\u306b\u5927\u898f\u6a21\u306a\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u306f\u3001\u5404\u30e1\u30bd\u30c3\u30c9\u306e\u7279\u6027\u3092\u7406\u89e3\u3057\u3001\u9069\u5207\u306b\u9078\u629e\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"i-37\">\u5b9f\u8df5\u7684\u306a\u30e6\u30fc\u30b9\u30b1\u30fc\u30b9\u96c6<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-38\">\u30ed\u30b0\u89e3\u6790\u3067\u306e\u6d3b\u7528\u4f8b<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-39\">\u30a2\u30af\u30bb\u30b9\u30ed\u30b0\u306e\u89e3\u6790<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class AccessLogAnalyzer\n  LOG_PATTERN = \/\n    \\A\n    (?&lt;ip&gt;\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})\\s\n    (?&lt;timestamp&gt;\\[\\d{2}\\\/\\w{3}\\\/\\d{4}:\\d{2}:\\d{2}:\\d{2}\\s[+-]\\d{4}\\])\\s\n    \"(?&lt;method&gt;[A-Z]+)\\s\n    (?&lt;path&gt;[^\\s\"]+)\\s\n    HTTP\\\/(?&lt;http_version&gt;\\d\\.\\d)\"\\s\n    (?&lt;status&gt;\\d{3})\\s\n    (?&lt;bytes&gt;\\d+)\n  \/x\n\n  def self.analyze_log_line(line)\n    return nil unless line\n\n    if result = line.match(LOG_PATTERN)\n      {\n        ip: result[:ip],\n        timestamp: parse_timestamp(result[:timestamp]),\n        method: result[:method],\n        path: result[:path],\n        http_version: result[:http_version],\n        status: result[:status].to_i,\n        bytes: result[:bytes].to_i\n      }\n    end\n  rescue =&gt; e\n    puts \"Error parsing log line: #{e.message}\"\n    nil\n  end\n\n  private\n\n  def self.parse_timestamp(timestamp)\n    # \u30bf\u30a4\u30e0\u30b9\u30bf\u30f3\u30d7\u3092\u9069\u5207\u306a\u5f62\u5f0f\u306b\u5909\u63db\n    timestamp.gsub(\/[\\[\\]]\/, '')\n  end\nend\n\n# \u4f7f\u7528\u4f8b\nlog_line = '192.168.1.1 [10\/Oct\/2023:13:55:36 +0900] \"GET \/api\/users HTTP\/1.1\" 200 1234'\nputs AccessLogAnalyzer.analyze_log_line(log_line)<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-40\">\u30a8\u30e9\u30fc\u30ed\u30b0\u306e\u89e3\u6790<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class ErrorLogAnalyzer\n  def self.analyze_error_logs(log_file)\n    error_patterns = {\n      database: \/Database\\serror:\\s(?&lt;message&gt;.*?)(?=\\s\\{|\\z)\/,\n      validation: \/Validation\\sfailed:\\s(?&lt;fields&gt;.*?)(?=\\s\\{|\\z)\/,\n      security: \/Security\\sviolation:\\s(?&lt;details&gt;.*?)(?=\\s\\{|\\z)\/\n    }\n\n    File.foreach(log_file).lazy.each_with_object(Hash.new(0)) do |line, stats|\n      error_patterns.each do |type, pattern|\n        if match = line.match(pattern)\n          stats[type] += 1\n          yield(type, match[:message] || match[:fields] || match[:details]) if block_given?\n        end\n      end\n    end\n  end\nend\n\n# \u4f7f\u7528\u4f8b\nFile.write('error.log', [\n  \"Database error: Connection timeout {\\\"time\\\":\\\"2024-03-15\\\"}\",\n  \"Validation failed: Email invalid format\",\n  \"Security violation: Unauthorized access attempt\"\n].join(\"\\n\"))\n\nErrorLogAnalyzer.analyze_error_logs('error.log') do |type, message|\n  puts \"#{type}: #{message}\"\nend<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-41\">\u30d5\u30a9\u30fc\u30e0\u5165\u529b\u306e\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u5b9f\u88c5\u4f8b<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-42\">\u9ad8\u5ea6\u306a\u30d5\u30a9\u30fc\u30e0\u30d0\u30ea\u30c7\u30fc\u30bf\u30fc<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class FormValidator\n  PATTERNS = {\n    email: \/\\A[\\w+\\-.]+@[a-z\\d\\-.]+\\.[a-z]+\\z\/i,\n    phone: \/\\A(\\+?\\d{1,3}[-.\\s]?)?\\d{2,4}[-.\\s]?\\d{2,4}[-.\\s]?\\d{4}\\z\/,\n    password: \/\\A\n      (?=.*[A-Z])           # \u5c11\u306a\u304f\u3068\u30821\u3064\u306e\u5927\u6587\u5b57\n      (?=.*[a-z])           # \u5c11\u306a\u304f\u3068\u30821\u3064\u306e\u5c0f\u6587\u5b57\n      (?=.*\\d)              # \u5c11\u306a\u304f\u3068\u30821\u3064\u306e\u6570\u5b57\n      (?=.*[!@#$%^&amp;*])     # \u5c11\u306a\u304f\u3068\u30821\u3064\u306e\u7279\u6b8a\u6587\u5b57\n      .{8,}                 # \u5168\u4f53\u30678\u6587\u5b57\u4ee5\u4e0a\n    \\z\/x,\n    username: \/\\A[a-zA-Z0-9_]{3,20}\\z\/\n  }.freeze\n\n  def self.validate_field(field_type, value)\n    pattern = PATTERNS[field_type]\n    return { valid: false, error: \"\u672a\u5b9a\u7fa9\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u30bf\u30a4\u30d7\u3067\u3059\" } unless pattern\n\n    if result = value&amp;.match(pattern)\n      { valid: true, value: result[0] }\n    else\n      { valid: false, error: generate_error_message(field_type) }\n    end\n  end\n\n  private\n\n  def self.generate_error_message(field_type)\n    case field_type\n    when :email\n      \"\u6709\u52b9\u306a\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\"\n    when :phone\n      \"\u6709\u52b9\u306a\u96fb\u8a71\u756a\u53f7\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\"\n    when :password\n      \"\u30d1\u30b9\u30ef\u30fc\u30c9\u306f8\u6587\u5b57\u4ee5\u4e0a\u3067\u3001\u5927\u6587\u5b57\u3001\u5c0f\u6587\u5b57\u3001\u6570\u5b57\u3001\u7279\u6b8a\u6587\u5b57\u3092\u542b\u3080\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\"\n    when :username\n      \"\u30e6\u30fc\u30b6\u30fc\u540d\u306f3-20\u6587\u5b57\u306e\u534a\u89d2\u82f1\u6570\u5b57\u3068\u30a2\u30f3\u30c0\u30fc\u30b9\u30b3\u30a2\u306e\u307f\u4f7f\u7528\u53ef\u80fd\u3067\u3059\"\n    end\n  end\nend\n\n# \u4f7f\u7528\u4f8b\nform_data = {\n  email: \"user@example.com\",\n  phone: \"090-1234-5678\",\n  password: \"Password123!\",\n  username: \"john_doe123\"\n}\n\nform_data.each do |field, value|\n  result = FormValidator.validate_field(field, value)\n  puts \"#{field}: #{result}\"\nend<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-43\">CSV\u30c7\u30fc\u30bf\u51e6\u7406\u3067\u306e\u6d3b\u7528\u4f8b<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-44\">CSV\u30c7\u30fc\u30bf\u306e\u30af\u30ea\u30fc\u30cb\u30f3\u30b0\u3068\u5909\u63db<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class CSVProcessor\n  def self.process_csv_line(line)\n    patterns = {\n      date: \/\\A(\\d{4})-(\\d{2})-(\\d{2})\\z\/,\n      number: \/\\A-?\\d+\\.?\\d*\\z\/,\n      currency: \/\\A\u00a5\\s*(\\d{1,3}(,\\d{3})*|\\d+)(.\\d{2})?\\z\/\n    }\n\n    line.split(',').map do |field|\n      clean_field = field.strip\n\n      case clean_field\n      when patterns[:date]\n        Time.parse(clean_field).strftime('%Y-%m-%d')\n      when patterns[:number]\n        clean_field.to_f\n      when patterns[:currency]\n        clean_field.gsub(\/[\u00a5,\\s]\/, '').to_f\n      else\n        clean_field\n      end\n    end\n  rescue =&gt; e\n    puts \"Error processing CSV line: #{e.message}\"\n    nil\n  end\nend\n\n# \u4f7f\u7528\u4f8b\ncsv_line = \"2024-03-15,\u00a5 1,234.56,\u5546\u54c1A,100\"\nprocessed_data = CSVProcessor.process_csv_line(csv_line)\nputs processed_data.inspect<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u5b9f\u8df5\u7684\u306a\u30e6\u30fc\u30b9\u30b1\u30fc\u30b9\u306f\u3001\u5b9f\u969b\u306e\u696d\u52d9\u3067\u3088\u304f\u906d\u9047\u3059\u308b\u5834\u9762\u3067<code>match<\/code>\u30e1\u30bd\u30c3\u30c9\u3092\u52b9\u679c\u7684\u306b\u6d3b\u7528\u3059\u308b\u65b9\u6cd5\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3001\u4fdd\u5b88\u6027\u3092\u8003\u616e\u3057\u305f\u5b9f\u88c5\u306b\u3088\u308a\u3001\u3088\u308a\u5805\u7262\u306a\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u69cb\u7bc9\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>match\u30e1\u30bd\u30c3\u30c9\u306e\u57fa\u790e\u77e5\u8b58 Warning: Undefined array key &#8220;is_admin&#8221; in \/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp- &#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":{"0":"post-1338","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-ruby","7":"nothumb"},"_links":{"self":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/1338","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1338"}],"version-history":[{"count":1,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/1338\/revisions"}],"predecessor-version":[{"id":1340,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/1338\/revisions\/1340"}],"wp:attachment":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1338"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1338"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1338"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}