Snippets

sironekotoro 正規表現を使わずに文字のパターンマッチ non_use_regex.pl

Updated by sironekotoro

File non_use_regex.pl Modified

  • Ignore whitespace
  • Hide word diff
 
     # 取り出した文字が p だったら次のif文を実行する
     if ( $char[$i] eq 'p' ) {
+
         # p の次の文字が存在し、それが e であれば次のif文を実行
         if ( $char[ $i + 1 ] && $char[ $i + 1 ] eq 'e' ) {
 
Updated by sironekotoro

File non_use_regex.pl Modified

  • Ignore whitespace
  • Hide word diff
+#!/usr/bin/env perl
 use strict;
 use warnings;
 
 if ( $line =~ /perl/ ) {
     print "include\n";
 }
-else {
-    print "not include\n";
-}
 
-# 正規表現を使わない場合
-my @splitted_line = split //, $line;
-for ( my $i = 0; $i < @splitted_line; $i++ ) {
-    if ( $splitted_line[$i] eq 'p' ) {
-        if ( $splitted_line[ $i + 1 ] eq 'a' ) {
-            if ( $splitted_line[ $i + 2 ] eq 'p' ) {
-                if ( $splitted_line[ $i + 3 ] eq 'i' ) {
-                    if ( $splitted_line[ $i + 4 ] eq 'x' ) {
-                        print "include\n";
-                    }
+
+# 正規表現を使わない場合・・・
+# 文字列を1文字ずつバラして配列に入れる
+my @char = split //, $line;
+
+# 配列から1文字ずつ取り出す
+for ( my $i = 0; $i <= $#char; $i++ ) {
+
+    # 取り出した文字が p だったら次のif文を実行する
+    if ( $char[$i] eq 'p' ) {
+        # p の次の文字が存在し、それが e であれば次のif文を実行
+        if ( $char[ $i + 1 ] && $char[ $i + 1 ] eq 'e' ) {
+
+            # e の次の文字が存在し、それが r であれば次のif文を実行
+            if ( $char[ $i + 2 ] && $char[ $i + 2 ] eq 'r' ) {
+
+                # r の次の文字が存在し、それが l であれば include と表示
+                if ( $char[ $i + 3 ] && $char[ $i + 3 ] eq 'l' ) {
+                    print "include\n";
                 }
             }
         }
Created by sironekotoro

File non_use_regex.pl Added

  • Ignore whitespace
  • Hide word diff
+use strict;
+use warnings;
+
+# 第4回 サブルーチン/正規表現編
+# https://github.com/perl-entrance-org/workshop-2018/blob/master/4th/slide.md
+# もし、正規表現を使わずに文字のパターンマッチをするとしたら・・・?
+
+my $line = 'papix loves perl';
+
+# 通常の正規表現
+if ( $line =~ /perl/ ) {
+    print "include\n";
+}
+else {
+    print "not include\n";
+}
+
+# 正規表現を使わない場合
+my @splitted_line = split //, $line;
+for ( my $i = 0; $i < @splitted_line; $i++ ) {
+    if ( $splitted_line[$i] eq 'p' ) {
+        if ( $splitted_line[ $i + 1 ] eq 'a' ) {
+            if ( $splitted_line[ $i + 2 ] eq 'p' ) {
+                if ( $splitted_line[ $i + 3 ] eq 'i' ) {
+                    if ( $splitted_line[ $i + 4 ] eq 'x' ) {
+                        print "include\n";
+                    }
+                }
+            }
+        }
+    }
+}
HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.