8.70. regexm 全体マッチ

  • 書式1: regexm(str,正規表現)

  • 書式2: regexmw(str,正規表現)

指定した正規表現が、文字列 \(str\) 全体にマッチすれば真を返す。 \(str\) もしくは正規表現にマルチバイト文字を含み、 Shift_JISなど文字の出現順によっては意に沿わない検索結果となる場合はregexmw関数を使うこと。

利用例

importと入力データ(CSV)の準備

 1import nysol.mcmd as nm
 2
 3with open('dat1.csv','w') as f:
 4  f.write(
 5'''id,str
 61,caabaa
 72,acabaaa
 83,
 94,bbcbcc
10''')

基本例

id=1,id=2 共に、正規表現で示された c に続く aa を含んでいるが、 id=2 ではマッチする範囲が部分的(2文字目の c から最後まで)であるために偽となっている。

1nm.mcal(c='regexm($s{str},"c.*aa")', a='rsl', i="dat1.csv", o="rsl1.csv").run()
2### rsl1.csv の内容
3# id,str,rsl
4# 1,caabaa,1
5# 2,acabaaa,0
6# 3,,0
7# 4,bbcbcc,0

末尾一致

正規表現 .*c で$str$項目の全体がカバーされるのは id=4 の行のみである。

1nm.mcal(c='regexm($s{str},".*c")', a='rsl', i="dat1.csv", o="rsl2.csv").run()
2### rsl2.csv の内容
3# id,str,rsl
4# 1,caabaa,0
5# 2,acabaaa,0
6# 3,,0
7# 4,bbcbcc,1

空文字マッチ

正規表現 ^$id=3 の空文字にマッチする。

1nm.mcal(c='regexm($s{str},"^$")', a='rsl', i="dat1.csv", o="rsl3.csv").run()
2### rsl3.csv の内容
3# id,str,rsl
4# 1,caabaa,0
5# 2,acabaaa,0
6# 3,,1
7# 4,bbcbcc,0