書式1: regexpfx(,正規表現)
書式2: regexpfxw(,正規表現)
指定した正規表現が最長マッチする文字列の部分文字列のプレフィックス (部分文字列より先頭側の文字列)を返す。 同じ文字列及び正規表現によってregexpfx関数,regexstr関数,regexsfx関数の3関数を実行した場合、 それぞれで得られた文字列をその順番に結合すると元の文字列が再現できる関係にある。
もしくは正規表現にマルチバイト文字を含み、 Shift_JISなど文字の出現順によっては意に沿わない検索結果となる場合はregexpfxw関数を使うこと。
正規表現c.*aに最も長くマッチする部分文字列のプレフィックスを得る。 例えばid=4では、項目のcabbcaにマッチしており、そのプレフィックス すなわちbaを返している。 regexstr,regexpfxと同じ入力データを使っているので、比較すると分かりやすい。
$ more dat1.csv id,str 1,xcbbbayy 2,xxcbaay 3, 4,bacabbca $ mcal c='regexpfx($s{str},"c.*a")' a=rsl i=dat1.csv o=rsl1.csv #END# kgcal a=rsl c=regexpfx($s{str},"c.*a") i=dat1.csv o=rsl1.csv $ more rsl1.csv id,str,rsl 1,xcbbbayy,x 2,xxcbaay,xx 3,, 4,bacabbca,ba