開発環境
- OS X Lion - Apple(OS)
- TextWrangler(Text Editor) (BBEditの機能制限無料版、light版)
- Script言語:Perl
『初めてのPerl 第6版』(Randal L. Schwartz, Tom Phoenix, brian d foy 共著、近藤 嘉雪 訳、オライリー・ジャパン、2012年、ISBN978-4-87311-567-2) の8章(正規表現によるマッチ)、8.10(練習問題)3を解いてみる。
その他参考書籍
3.
コード(TextWrangler)
sample.pl
#!/usr/bin/env perl
use strict;
use warnings;
use utf8;
use 5.016;
binmode STDIN, ':utf8';
binmode STDOUT, ':utf8';
while(<>){
chomp;
if(/\b(\w*a)\b/){
print "Matched: |$`|<$&>$'|\n";
print " \$1 contains '$1'\n";
} else {
print "No match: |$_|\n";
}
}
入出力結果(Terminal)
$ ./sample.pl test.txt No match: |A| Matched: ||<a>| $1 contains 'a' Matched: ||<kamimura>'s blog| $1 contains 'kamimura' Matched: |http://|<sitekamimura>.blogspot.com| $1 contains 'sitekamimura' No match: |KMI| Matched: |http://www.|<mkamimura>.com | $1 contains 'mkamimura' No match: |Fred| No match: |FRED| No match: |fred| No match: |frederick| No match: |Alfred| No match: |fred flintstone| No match: |Mr. Slate | No match: |Mississippi| No match: |Bamm-Bamm | Matched: ||<wilama>| $1 contains 'wilama' No match: |barney| Matched: ||<wilma> and fred| $1 contains 'wilma' Matched: |fred and |<wilma>| $1 contains 'wilma' Matched: ||<Wilma> and Fred | $1 contains 'Wilma' Matched: |Fred and |<Wilma>| $1 contains 'Wilma' Matched: ||<wilma>&fred| $1 contains 'wilma' Matched: |Mrs. |<Wilma> Flintstone | $1 contains 'Wilma' Matched: |I saw |<Wilma> yesterday| $1 contains 'Wilma' Matched: |I, |<Wilma>!| $1 contains 'Wilma' No match: |Z| Matched: ||<llama>| $1 contains 'llama' $ cat test.txt A a kamimura's blog http://sitekamimura.blogspot.com KMI http://www.mkamimura.com Fred FRED fred frederick Alfred fred flintstone Mr. Slate Mississippi Bamm-Bamm wilama barney wilma and fred fred and wilma Wilma and Fred Fred and Wilma wilma&fred Mrs. Wilma Flintstone I saw Wilma yesterday I, Wilma! Z llama $
ちなみにJavaScriptの場合。
コード(TextWrangler)
var result = "";
var str = "A\na\nkamimura's blog\nhttp://sitekamimura.blogspot.com\nKMI\nhttp://www.mkamimura.com \nFred\nFRED\nfred\nfrederick\nAlfred\nfred flintstone\nMr. Slate \nMississippi\nBamm-Bamm \nwilama\nbarney\nwilma and fred\nfred and wilma\nWilma and Fred \nFred and Wilma\nwilma&fred\nMrs. Wilma Flintstone \nI saw Wilma yesterday\nI, Wilma!\nZ\nllama\n";
var lines = str.split("\n");
for(var i = 0; i < lines.length; i++){
if(lines[i].match(/\b(\w*a)\b/)){
result += lines[i] + "\n" +
" " + RegExp.$1 + "\n";
}
}
$('#pre0').text(result);
pythonの場合。
sample.py
コード(TextWrangler)
#!/usr/bin/env python3.3
#-*- coding:utf-8 -*-
import sys, re
for line in open(sys.argv[1]):
a = re.search(r"\b\w*a\b", line)
if a:
print(line, end="")
print(" " + a.group())
入出力結果(Terminal)
$ ./sample.py test.txt
a
a
kamimura's blog
kamimura
http://sitekamimura.blogspot.com
sitekamimura
http://www.mkamimura.com
mkamimura
wilama
wilama
wilma and fred
wilma
fred and wilma
wilma
Wilma and Fred
Wilma
Fred and Wilma
Wilma
wilma&fred
wilma
Mrs. Wilma Flintstone
Wilma
I saw Wilma yesterday
Wilma
I, Wilma!
Wilma
llama
llama
$
0 コメント:
コメントを投稿