プãƒã‚°ãƒ©ãƒ 言語 æ£è¦è¡¨ç¾
目次
概è¦
é€šå¸¸ã®æ–‡å—列判定(Perl)
fnMatchCheck("I Love Perl");
→マッãƒ
fnMatchCheck("I love perl");
→マッãƒã—ãªã„
sub fnMatchCheck
{
  my $target = shift;
  if ($target eq "I Love Perl")
  {
    print "マッãƒï¼","\n";
  }
}
æ£è¦è¡¨ç¾ã‚’用ã„ãŸåˆ¤å®š(Perl)
fnMatchCheck("I Love Perl");
→マッãƒ
fnMatchCheck("I love perl");
→マッãƒ
sub fnMatchCheck
{
  my $target = shift;
  if ($target =~ /I [lL]ove [pP]erl/)
  {
    print "マッãƒï¼","\n";
  }
}
基本形
string[] strCheck = {
  @"C#", ⇒マッãƒï¼
  @"c#",
  @"C",
  @"c",
  @"I Love C#", ⇒マッãƒï¼
  @"VB.NET",
  @"Perl",
  @"abcde",
  @"abcC#de", ⇒マッãƒï¼
  };
Regex myReg = new Regex(pattern: @"C#");
foreach (string elm in strCheck)
{
  //elm 㯠"C#"ã‚’å«ã‚€ã‹ï¼Ÿ
  if (myReg.IsMatch(input: elm))
  {
    Console.WriteLine("マッãƒï¼");
  }
}
「@ã€ã¯ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—処ç†é˜²æ¢
(「プãƒã‚°ãƒ©ãƒ 言語 変数/リテラルã€å‚ç…§)
æ£è¦è¡¨ç¾ãƒ‘ターンを定義
phone_num = re.compile(r'\d\d\d-\d\d\d\d-\d\d\d\d')
引数ã‹ã‚‰æ£è¦è¡¨ç¾ãƒ‘ターンã«ãƒžãƒƒãƒã™ã‚‹å€¤ã‚’検索
mo = phone_num.search('ç§ã®é›»è©±ç•ªå·ã¯050-3695-5892ã§ã™')
マッãƒã—ãŸå€¤ã‚’å–å¾—
print('電話番å·ï¼š{phone_num}'.format(phone_num=mo.group()))
→電話番å·ï¼š050-3695-5892
ワイルドカード「.ã€æŽ¢ç´¢ã«æ”¹è¡Œã‚’å«ã‚ã‚‹
pattern = re.compile(r'æ–‡å—列', re.DOTALL)
大文å—å°æ–‡å—を区別ã›ãšæŽ¢ç´¢ã™ã‚‹
pattern = re.compile(r'æ–‡å—列', re.IGNORECASE)
pattern = re.compile(r'æ–‡å—列', re.I)
æ£è¦è¡¨ç¾ã«ã¤ã„ã¦æ”¹è¡Œã€ã‚³ãƒ¡ãƒ³ãƒˆå¯èƒ½ã«
pattern = re.compile(r'æ–‡å—列', re.VERBOSE)
オプションã®çµ„ã¿åˆã‚ã›(「|ã€ã§ç¹‹ã)
pattern = re.compile(r'æ–‡å—列', re.DOTALL | re.IGNORECASE)
æ–‡å—列 㯠検索語 ã‚’å«ã‚€ã‹ï¼Ÿ
fnMatchCheck("I Love Perl");
→マッãƒï¼
sub fnMatchCheck
{
  my $target = shift;
  # $target 㯠Perl ã‚’å«ã‚€ã‹ï¼Ÿ
  if ($target =~ /Perl/)
  {
    print "マッãƒï¼","\n";
  }
}
å¦å®šå½¢
æ–‡å—列 !~ /検索語/
æ–‡å—列 㯠検索語 ã‚’å«ã¾ãªã„ã‹ï¼Ÿ
fnMatchCheck("I Love Perl");
→アンマッãƒï¼
sub fnMatchCheck
{
  my $target = shift;
  # $target 㯠Ruby ã‚’å«ã¾ãªã„ã‹ï¼Ÿ
  if ($target !~ /Ruby/)
  {
    print "アンマッãƒï¼","\n";
  }
}
æ£è¦è¡¨ç¾
一覧
è¡¨ç¾ | 機能 | 使用例 | çµæžœ |
---|---|---|---|
. | ä»»æ„ã®1æ–‡å— | a.a | a9aã€aaa |
* | ç›´å‰ã®1æ–‡å—ã®0回以上ã®ç¹°ã‚Šè¿”ã— | ||
.* | ç›´å‰ã®1æ–‡å—ã®1回以上ã®ç¹°ã‚Šè¿”ã— | a.*a | a99aã€a9aã€aaaã€aa |
+ | ç›´å‰ã®1æ–‡å—ã®1回以上ã®ç¹°ã‚Šè¿”ã— | a+a | a99aã€a9aã€aa |
? | ç›´å‰ã®æ–‡å—ã®0ã¾ãŸã¯1æ–‡å— | a?a | aaaã€aaã€9aa |
^ | 行ã®å…ˆé | ^a | aaaã€aaã€a9 |
$ | è¡Œã®æœ«å°¾ | a$ | aaaã€aaã€9a |
[~] | カッコ内ã®ä»»æ„ã®æ–‡å— | [123] [1-3]ã‚‚å¯ |
a1ã€2aã€a123b |
[^~] | カッコ内ã®ä»»æ„ã®æ–‡å—以外 | [^1-3] | aaã€9a |
{n} | n回繰り返㗠| a{2} | aaã€aaaã€9aaã€aa9 |
{n,} | n回以上繰り返㗠| a{2,} | aaã€aaaã€9aaã€aa9 |
{n,m} | n~m回繰り返㗠| a{2,4} | aaã€aaaã€aaaaã€9aaa |
~1|~2 | ~1 ã¾ãŸã¯ ~2 | aa|99 | aaaã€a99ã€aab99 |
\ | 直後ã®ä¸€æ–‡å—ã‚’éžæ£è¦è¡¨ç¾ã¨ã—ã¦æ‰±ã† | \[ã€\?ã€\. | [aaã€a?ã€a. |
メタã‚ャラクタ
è¡¨ç¾ | 機能 | 例 |
---|---|---|
\w | è‹±å— | a~zã€A~Zã€_ã€1~9 |
\W | 英å—以外 | |
\s | ç©ºç™½æ–‡å— | åŠè§’スペースã€ã‚¿ãƒ–ã€æ”¹è¡Œã€ã‚ャリッジリターン |
\S | 空白文å—以外 | |
\d | åŠè§’æ•°å— | 0~9 |
\D | åŠè§’æ•°å—以外 | |
\b | å˜èªžã®å¢ƒç•Œ |
ä»»æ„ã®ä¸€æ–‡å—
[検索語]
検索語ã®ä¸ã®ä¸€æ–‡å— ã‚’å«ã‚€ã‹ï¼Ÿ
  @"C#", ⇒マッãƒï¼
  @"c#", ⇒マッãƒï¼
  @"C", ⇒マッãƒï¼
  @"c", ⇒マッãƒï¼
  @"I Love C#", ⇒マッãƒï¼
  @"VB.NET",
  @"Perl",
  @"abcde", ⇒マッãƒï¼
  @"i love c#", ⇒マッãƒï¼
  };
// elm ã¯ã€Œcã€ã‹ã€ŒCã€ã‚’å«ã‚€ã‹ï¼Ÿ
Regex myReg = new Regex(pattern: @"[cC]");
foreach (string elm in strCheck)
{
  if (myReg.IsMatch(elm))
  {
    Console.WriteLine("マッãƒï¼");
  }
}
pattern = re.compile(r'[pP]')
mo = pattern.findall('phpPHPpythonPYTHONjavaJAVA')
mo # ['p', 'p', 'P', 'P', 'p', 'P']
mo[0] # p(å°æ–‡å—)
mo[1] # p(å°æ–‡å—)
mo[2] # P(大文å—)
mo[3] # P(大文å—)
連続を定義ã™ã‚‹å ´åˆ
[a-zA-Z0-9]
記å·ã‚’定義ã™ã‚‹å ´åˆ
[.]
â†“ã®æ§˜ã«ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—ä¸è¦
[\.]
補集åˆ
定義ã—ãŸæ–‡å—列ã§ãªã„æ–‡å—列を検索
pattern = re.compile(r'[^pP]')
mo = pattern.findall('phpPHPpythonPYTHONjavaJAVA')
mo # ['h', 'H', 'y', 't', 'h', 'o', ç•¥]
mo[0] # h
mo[1] # H
æ–‡å—列 㯠検索語ã®ä¸ã®ä¸€æ–‡å— ã‚’å«ã‚€ã‹ï¼Ÿ
fnMatchCheck("I Love Perl");
→マッãƒï¼
fnMatchCheck("I love perl");
→マッãƒï¼
sub fnMatchCheck
{
  my $target = shift;
  # $target 㯠p or P ã‚’å«ã‚€ã‹ï¼Ÿ
  if ($target =~ /[pP]/)
  {
    print "マッãƒï¼","\n";
  }
}
ä»»æ„ã®ä¸€æ–‡å—(連続)
[a–g]
⇒[abcdefg]
fnMatchCheck("c;);
→マッãƒï¼
sub fnMatchCheck
{
  my $target = shift;
  # $target 㯠abcdefg・・・vwxyz ã®ä¸ã®ä¸€æ–‡å—ã‚’å«ã‚€ã‹ï¼Ÿ
  if ($target =~ /[a-z]/)
  {
    print "マッãƒï¼","\n";
  }
}
ä»»æ„ã®ä¸€æ–‡å—ã®å¦å®š
æ–‡å—列 =~ /[^検索語]/
æ–‡å—列 㯠検索語ã®ä¸ã®ä¸€æ–‡å— ã‚’å«ã¾ãªã„ã‹ï¼Ÿ
fnMatchCheck("hijklmn");
→マッãƒï¼
sub fnMatchCheck
{
  my $target = shift;
  # $target 㯠abcdefg ã®ä¸ã®ä¸€æ–‡å—ã‚’å«ã¾ãªã„ã‹ï¼Ÿ
  if ($target =~ /[^a-g]/)
  {
    print "マッãƒï¼","\n";
  }
}
ワイルドカード(一文å—)
.
何ã‹ä¸€æ–‡å— ã‚’å«ã‚€ã‹ï¼Ÿ
  @"get", ⇒マッãƒï¼
  @"gt",
  @"g",
  @"t",
  @"got", ⇒マッãƒï¼
  @"ghost",
  @"I get pass" ⇒マッãƒï¼
  };
// elm 㯠先é 「gã€ã€é–“ã«ä½•ã‹ä¸€æ–‡å—ã€æœ«å°¾ã€Œtã€ã®æ–‡å—ã‚’å«ã‚€ã‹ï¼Ÿ
Regex myReg = new Regex(pattern: @"g.t");
foreach (string elm in strCheck)
{
  if (myReg.IsMatch(elm))
  {
    Console.WriteLine("マッãƒï¼");
  }
}
pattern = re.compile(r'.at')
mo = pattern.findall('The cat in the hat sat on the flat mat.')
mo # ['cat', 'hat', 'sat', 'lat', 'mat']
mo[0] # cat
pattern = re.compile(r'Language: (.*) Frame Work: (.*)')
mo = pattern.search('Language: php Frame Work: CakePHP3, Laravel')
mo.group() # Language: php Frame Work: CakePHP3, Laravel
mo.group(1) # php
mo.group(2) # CakePHP3, Laravel
æœ€çŸæŽ¢ç´¢
pattern = re.compile(r'<.*?>')
mo = pattern.search('Language: <php> Frame Work: <CakePHP3, Laravel>')
mo.group() # <php>
最長探索
pattern = re.compile(r'<.*>')
mo = pattern.search('Language: <php> Frame Work: <CakePHP3, Laravel>')
mo.group() # <php> Frame Work: <CakePHP3, Laravel>
ワイルドカード「.ã€æŽ¢ç´¢ã«æ”¹è¡Œã‚’å«ã‚ã‚‹
pattern = re.compile(r'æ–‡å—列', re.DOTALL)
æ–‡å—列 㯠~何ã‹ä¸€æ–‡å—~ ã‚’å«ã‚€ã‹ï¼Ÿ
fnMatchCheck("get");
→マッãƒï¼
fnMatchCheck("ghost");
→マッãƒã—ãªã„
fnMatchCheck("I’ve got a pass");
→マッãƒï¼
sub fnMatchCheck
{
  my $target = shift;
  # $target 㯠g(何ã‹ä¸€æ–‡å—)t ã‚’å«ã‚€ã‹ï¼Ÿ
  if ($target =~ /g.t/)
  {
    print "マッãƒï¼","\n";
  }
}
釿Œ‡å®šå
「?ã€(0個or1個)
  @"get", ⇒マッãƒï¼
  @"gt", ⇒マッãƒï¼
  @"g",
  @"t",
  @"got", ⇒マッãƒï¼
  @"ghost",
  @"I get pass" ⇒マッãƒï¼
  @"gto = great teacher onizuka"; ⇒マッãƒï¼
  };
// elm 㯠先é 「gã€ã€é–“ã«ä½•ã‹ï¼æ–‡å—or一文å—ã€æœ«å°¾ã€Œtã€ã®æ–‡å—ã‚’å«ã‚€ã‹ï¼Ÿ
Regex myReg = new Regex(pattern: @"g.?t");
foreach (string elm in strCheck)
{
  if (myReg.IsMatch(elm))
  {
    Console.WriteLine("マッãƒï¼");
  }
}
pattern = re.compile(r'Bat(wo)?man')
mo = pattern.search('The Adventures of Batman')
print(mo.group()) # Batman
mo = pattern.search('The Adventures of Batwoman')
print(mo.group()) # Batwoman
pattern = re.compile(r'(\d{3}-)?\d{4}-\d{4}')
mo = pattern.search('電話番å·ã¯050-3695-589244ã§ã™ã€‚')
mo.group() # 050-3695-5892
mo = pattern.search('電話番å·ã¯3695-589244ã§ã™ã€‚')
mo.group() # 3695-5892
pattern = re.compile(r'aa\d?aa')
mo = pattern.search('__aa555aa__')
mo # None
pattern = re.compile(r'aa\d?aa')
mo = pattern.search('__aa5aa__')
mo.group() # aa5aa
pattern = re.compile(r'aa\d?aa')
mo = pattern.search('__aaaa__')
mo.group() # aaaa
pattern = re.compile(r'aa\d?aa')
mo = pattern.search('__aaa__')
mo # None
æ–‡å—列 㯠~を0æ–‡å—ã‹1æ–‡å— ã‚’å«ã‚€ã‹ï¼Ÿ
例:ab?
⇒「a〠ã¾ãŸã¯ 「abã€ã«ãƒžãƒƒãƒ
例:a.?
⇒「a〠ã¾ãŸã¯ 「adã€ã€Œabã€â€¦ã€Œazã€ã‚„ã€ã€Œa0ã€â€¦ã€Œa9ã€ã«ãƒžãƒƒãƒ
fnMatchCheck("gt");
→マッãƒï¼
fnMatchCheck("get");
→マッãƒï¼
fnMatchCheck("ghost");
→マッãƒã—ãªã„
sub fnMatchCheck
{
  my $target = shift;
  if ($target =~ /g.?t/)
  {
   # $target 㯠g(何ã‹ã®æ–‡å—0æ–‡å—ã‹1æ–‡å—)t ã‚’å«ã‚€ã‹ï¼Ÿ
    print "マッãƒï¼","\n";
  }
}
「+ã€(1個以上)
  @"get", ⇒マッãƒï¼
  @"gt",
  @"g",
  @"t",
  @"got", ⇒マッãƒï¼
  @"ghost", ⇒マッãƒï¼
  @"I get pass" ⇒マッãƒï¼
  @"gto = great teacher onizuka";
  };
// elm 㯠先é 「gã€ã€é–“ã«ä½•ã‹ä¸€æ–‡å—ä»¥ä¸Šã€æœ«å°¾ã€Œtã€ã®æ–‡å—ã‚’å«ã‚€ã‹ï¼Ÿ
Regex myReg = new Regex(pattern: @"g.+t");
foreach (string elm in strCheck)
{
  if (myReg.IsMatch(elm))
  {
    Console.WriteLine("マッãƒï¼");
  }
}
pattern = re.compile(r'Bat(wo)+man')
mo = pattern.search('The Adventures of Batman')
mo # None
mo = pattern.search('The Adventures of Batwoman')
mo.group() # Batwoman
mo = pattern.search('The Adventures of Batwowowoman')
mo.group() # Batwowowoman
æ–‡å—列 㯠~を1個以上 ã‚’å«ã‚€ã‹ï¼Ÿ
例:ab+
⇒「abã€ã€Œabbã€ã€Œab0ã€â€¦ã«ãƒžãƒƒãƒ
例:a.+
⇒「aaã€ã€Œabã€ã€Œabcã€â€¦ã«ãƒžãƒƒãƒ
fnMatchCheck("gt");
→マッãƒã—ãªã„
fnMatchCheck("get");
→マッãƒï¼
fnMatchCheck("ghost");
→マッãƒï¼
sub fnMatchCheck
{
  my $target = shift;
  if ($target =~ /g.+t/)
  {
   # $target 㯠g(何ã‹ã®æ–‡å—1個以上)t ã‚’å«ã‚€ã‹ï¼Ÿ
    print "マッãƒï¼","\n";
  }
}
「*ã€(0個以上)
  @"get", ⇒マッãƒï¼
  @"gt", ⇒マッãƒï¼
  @"g",
  @"t",
  @"got", ⇒マッãƒï¼
  @"ghost", ⇒マッãƒï¼
  @"I get pass" ⇒マッãƒï¼
  @"gto = great teacher onizuka"; ⇒マッãƒï¼
  };
// elm 㯠先é 「gã€ã€é–“ã«ä½•ã‹ï¼æ–‡å—ä»¥ä¸Šã€æœ«å°¾ã€Œtã€ã®æ–‡å—ã‚’å«ã‚€ã‹ï¼Ÿ
Regex myReg = new Regex(pattern: @"g.*t");
foreach (string elm in strCheck)
{
  if (myReg.IsMatch(elm))
  {
    Console.WriteLine("マッãƒï¼");
  }
}
pattern = re.compile(r'Bat(wo)*man')
mo = pattern.search('The Adventures of Batman')
mo.group() # Batman
mo = pattern.search('The Adventures of Batwoman')
mo.group() # Batwoman
mo = pattern.search('The Adventures of Batwowowoman')
mo.group() # Batwowowoman
æ–‡å—列 㯠~を0æ–‡å—以上 ã‚’å«ã‚€ã‹ï¼Ÿ
例:ab*
⇒「aã€ã€Œabã€ã€Œabbã€ã€Œab0ã€â€¦ã«ãƒžãƒƒãƒ
例:a.*
⇒「aã€ã€Œaaã€ã€Œabã€ã€Œabcã€â€¦ã«ãƒžãƒƒãƒ
fnMatchCheck("gt");
→マッãƒï¼
fnMatchCheck("get");
→マッãƒï¼
fnMatchCheck("ghost");
→マッãƒï¼
sub fnMatchCheck
{
  my $target = shift;
  if ($target =~ /g.*t/)
  {
   # $target 㯠g(何ã‹ã®æ–‡å—0個以上)t ã‚’å«ã‚€ã‹ï¼Ÿ
    print "マッãƒï¼","\n";
  }
}
「{n}ã€(n個連続)
「{n,}ã€(n個以上連続)
「{n,m}ã€(n個以上m個以下連続)
  @"gt",
  @"get",
  @"geet",
  @"geeet" ⇒マッãƒï¼,
  @"geeeet",
  @"g",
  @"t",
  @"ghost" ⇒マッãƒï¼,
  @"I see ghost." ⇒マッãƒï¼;
  };
// elm 㯠先é 「gã€ã€é–“ã«ä½•ã‹ä¸‰æ–‡å—ã€æœ«å°¾ã€Œtã€ã®æ–‡å—ã‚’å«ã‚€ã‹ï¼Ÿ
Regex myReg1 = new Regex(pattern: @"g.{3}t");
foreach (string elm in strCheck1)
{
  if (myReg1.IsMatch(elm))
  {
    Console.WriteLine("マッãƒï¼");
  }
}
string[] strCheck2 = {
  @"gt",
  @"get", ⇒マッãƒï¼
  @"geet", ⇒マッãƒï¼
  @"geeet", ⇒マッãƒï¼
  @"geeeet",
  @"g",
  @"t",
  @"ghost" ⇒マッãƒï¼,
  @"I see ghost." ⇒マッãƒï¼
  };
// elm 㯠先é 「gã€ã€é–“ã«ä½•ã‹ï¼‘~3文å—ã€æœ«å°¾ã€Œtã€ã®æ–‡å—ã‚’å«ã‚€ã‹ï¼Ÿ
Regex myReg2 = new Regex(pattern: @"g.{1,3}t");
foreach (string elm in strCheck2)
{
  if (myReg2.IsMatch(elm))
  {
    Console.WriteLine("マッãƒï¼");
  }
}
string[] strCheck3 = {
  @"gt",
  @"get",
  @"geet",
  @"geeet", ⇒マッãƒï¼
  @"geeeet", ⇒マッãƒï¼
  @"g",
  @"t",
  @"ghost" ⇒マッãƒï¼,
  @"I see ghost." ⇒マッãƒï¼;
  };
// elm 㯠先é 「gã€ã€é–“ã«ä½•ã‹ä¸‰æ–‡å—ä»¥ä¸Šã€æœ«å°¾ã€Œtã€ã®æ–‡å—ã‚’å«ã‚€ã‹ï¼Ÿ
Regex myReg3 = new Regex(pattern: @"g.{3,}t");
foreach (string elm in strCheck3)
{
  if (myReg3.IsMatch(elm))
  {
    Console.WriteLine("マッãƒï¼");
  }
}
phone_num_pattern = re.compile(r'\d\d\d-\d\d\d\d-\d\d\d\d')
↑ã¨åŒã˜
phone_num_pattern = re.compile(r'\d{3}-\d{4}-\d{4}')
mo = phone_num_pattern.search('aaaaaaa050-3695-589244444ddddddddd')
mo.group() 050-3695-5892
æ–‡å—列 㯠~をn個連続 ã‚’å«ã‚€ã‹ï¼Ÿ
例:ge{2}t
⇒「geetã€ã«ãƒžãƒƒãƒã€‚get:×ã€gt:×
fnMatchCheck("get");
→マッãƒã—ãªã„
fnMatchCheck("geet");
→マッãƒï¼
fnMatchCheck("geeet");
→マッãƒã—ãªã„
sub fnMatchCheck
{
  my $target = shift;
  if ($target =~ /ge{2}t/)
  {
    print "マッãƒï¼","\n";
  }
}
最長/最çŸä¸€è‡´ã€Œæ£è¦è¡¨ç¾ã€?
最長マッãƒ/貪欲マッãƒ
pattern = re.compile(r'(php){3,5}')
mo = pattern.search('phpphpphpphp')
mo.group() # phpphpphpphp
æœ€ã‚‚é•·ã„æ–‡å—列を検索
最çŸãƒžãƒƒãƒ/éžè²ªæ¬²ãƒžãƒƒãƒ
pattern = re.compile(r'(php){3,5}?')
mo = pattern.search('phpphpphpphp')
mo.group() # phpphpphp
最もçŸã„æ–‡å—列を検索
ä½ç½®æŒ‡å®šå
「^〠先é
"555" â—‹
"5aa" â—‹
"a55" ×
phone_num_pattern = re.compile(r'^\d{3}-\d{4}-\d{4}')
mo = phone_num_pattern.search('aaaaaaa050-3695-589244444ddddddddd')
mo None
phone_num_pattern = re.compile(r'^\d{3}-\d{4}-\d{4}')
mo = phone_num_pattern.search('050-3695-589244444ddddddddd')
mo.group() 050-3695-5892
phone_num_pattern = re.compile(r'^\d{3}-\d{4}-\d{4}$')
mo = phone_num_pattern.search('050-3695-5892')
mo.group() #050-3695-5892
「$〠末尾
ãŸã ã—ã€æ–‡å—åˆ—ã®æœ«å°¾ãŒ \n ã®æ™‚ã¯ã€ãã®å‰ã¨ä¸€è‡´ã€‚
(末尾㌠\n ã§ã‚‚末尾ã§ä¸€è‡´ã•ã›ã‚‹ã«ã¯ã€\z を使ã†ã€‚)
"555" â—‹
"aa5" â—‹
"55a" ×
phone_num_pattern = re.compile(r'\d{3}-\d{4}-\d{4}$')
mo = phone_num_pattern.search('aaaaaaa050-3695-589244444ddddddddd')
mo None
phone_num_pattern = re.compile(r'\d{3}-\d{4}-\d{4}$')
mo = phone_num_pattern.search('aaaaaaa050-3695-5892')
mo.group() 050-3695-5892
phone_num_pattern = re.compile(r'^\d{3}-\d{4}-\d{4}$')
mo = phone_num_pattern.search('050-3695-5892')
mo.group() #050-3695-5892
代替構æˆä½“「|ã€
pattern = re.compile(r'php|python')
mo = pattern.search('ç§ã¯pythonã¨phpãŒå¾—æ„ã§ã™')
mo.group() # python
mo = pattern.search('ç§ã¯phpã¨pythonãŒå¾—æ„ã§ã™')
mo.group() # php
mo = pattern.findall('ç§ã¯pythonã¨phpãŒå¾—æ„ã§ã™')
mo # ['python', 'php']
mo[0] # python
mo[1] # python
グループ化構æˆä½“「()ã€
pattern = re.compile(r'(\d{3})-(\d{4})-(\d{4})')
mo = pattern.search('ç§ã®é›»è©±ç•ªå·ã¯050-3695-5892ã§ã™')
mo.group() # 050-3695-5892
mo.group(0) # 050-3695-5892
mo.group(1) # 050
mo.group(2) # 3695
mo.group(3) # 5892
mo.groups() # ('050', '3695', '5892')
ç½®æ›
pattern = re.compile(r'Language: \w+')
mo = pattern.sub(ç½®æ›ã™ã‚‹æ–‡å—, ç½®æ›ã™ã‚‹å‰ã®æ–‡å—列)
mo = pattern.sub('php', 'Language: XXX / Frame Work: CakePHP3')
mo
php / Frame Work: CakePHP3
pattern = re.compile(r'Agent \w+')
mo = pattern.sub('Agent *****', 'Agent Alice told Agent Carol that Agent Eve knew Agent Bob.')
mo
Agent ***** told Agent ***** that Agent ***** knew Agent *****.
pattern = re.compile(r'Agent (\w)\w*')
グループ1ã«ãƒžãƒƒãƒã—ãŸæ–‡å—列ã«å¯¾ã—ã¦ã€\1ã‚’ç½®æ›ã™ã‚‹
ã“ã®å ´åˆã¯(\w) ï¼Agent ã®å¾Œã®æœ€åˆã®1æ–‡å—ã§ç½®æ›
mo = pattern.sub(r'\1****', 'Agent Alice told Agent Carol that Agent Eve knew Agent Bob.')
mo
A**** told C**** that E**** knew B****.
pattern = re.compile(r'Agent (\w)\w*')
mo = pattern.sub('*****', 'Agent Alice told Agent Carol that Agent Eve knew Agent Bob.')
mo
***** told ***** that ***** knew *****.
my $s = "i love perl";
$s =~ s/i/I/;
⇒$s : I love perl
my $s = "I love perl";
$s =~ s/love/LOVE/;
$s =~ s/perl/PERL/;
⇒$s : I LOVE PERL
マッãƒã—ãŸå€¤ã®å–å¾—
{
  print "$1","\n";
  ⇒ 検索語
  # マッãƒã—ãŸå ´åˆã€æ¤œç´¢èªžãŒ$1ã«å…¥ã‚‹ã€‚
}
my $words_ref = [
  'papix loves meat!',
  'boolfool loves sushi!',
];
check($words_ref);
sub check
{
 my $str = shift;
 for my $elm (@$str)
 {
  if ($elm =~ /(.+) loves (.+)!/)
  {
   print "$1 => $2","\n";
   ⇒ papix => meat
   ⇒ boolfool => sushi
  }
 }
}
SQLã§ã®åˆ©ç”¨
「SQL DML:データ型/WHEREå¥ã«ãŠã‘ã‚‹æ–‡å—æŒ‡å®šã€å‚ç…§