8.71. regexpfx マッチ文字列のプレフィックス

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

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

指定した正規表現が最長マッチする文字列 \(str\) の部分文字列のプレフィックス (部分文字列より先頭側の文字列)を返す。 同じ文字列及び正規表現によってregexpfx関数,regexstr関数,regexsfx関数の3関数を実行した場合、 それぞれで得られた文字列をその順番に結合すると元の文字列が再現できる関係にある。 \(str\) もしくは正規表現にマルチバイト文字を含み、 Shift_JISなど文字の出現順によっては意に沿わない検索結果となる場合はregexpfxw関数を使うこと。

利用例

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

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

基本例

正規表現 c.*a に最も長くマッチする部分文字列のプレフィックスを得る。 例えば id=4 では、$str$項目の cabbca にマッチしており、そのプレフィックス すなわち ba を返している。 regexstr,regexpfx と同じ入力データを使っているので、比較すると分かりやすい。

1nm.mcal(c='regexpfx($s{str},"c.*a")', a='rsl', i="dat1.csv", o="rsl1.csv").run()
2### rsl1.csv の内容
3# id,str,rsl
4# 1,xcbbbayy,x
5# 2,xxcbaay,xx
6# 3,,
7# 4,bacabbca,ba