正規表現(Regular expression)
Javaの正規表現の書式に従っています。
書式の詳細については専門資料をご覧下さい。
'¥'は逆スラッシュ'\'で入力します。
正規表現書式の例
abc 示された文字にマッチします。
^abc 示された文字が行の先頭の時のみマッチします。
. ワイルドカード、任意の一文字を示す。
a+ 直前の文字が1個以上マッチする。
[abc] []内の任意の一文字にマッチ。
[^abc]
^は[]内の先頭に置かれそれ以外の文字、否定を示す。
a-z
ハイフンで示す範囲の文字にマッチ。
a{n}
直前の文字のn回の繰り返し。
abc|def|ghi
選択、区切られた文字列のどれか。
(a)(b)
文字のグループ化、()で囲われ左から1番目、2番目…。
\
直後のメタ文字を通常文字とする。
\d 数字1文字を示す。
\w アルファベットまたは数字の1文字を示す。
\n 改行コード。
\r キャリッジリターン。
(?i) 大文字と小文字を区別しないマッチングのオプションです。
RE_PTN |
[機能] 正規表現のパターンを定義します。
[書式] RE_PTN "パターン文字列"
[説明]
このパターンはRE_FIND,RE_REP,RE_REPALLで使用されます。
RE_MATより先に定義しておく必要があります。
[例]
10 re_ptn "a.c"
20 re_mat "abc 123xx def 456zz "
30 print re_find()
[結果]
-1
RE_MAT |
[機能] マッチングさせる対象の文字列を指定します。
[書式] RE_MAT "対象文字列"
[説明]
この文字列はRE_FIND,RE_REGION,RE_REP,RE_REPALLの対象になります。
またRE_GRP,RE_ST,RE_ENDで参照されます。
[例]
10 re_ptn
"abc|def"
20 re_mat "abc 123xx def
456zz "
30 print re_find()
[結果]
-1
RE_REGION |
[機能] ターゲットとなる文字列の範囲(リージョン)を設定します。
[書式] RE_REGION 開始位置, 終了位置
[説明]
RE_FIND,RE_REPの検索開始位置、終了位置に影響を与えます。
1文字目が位置0になります。(Javaの数え方と同じです)
例えば3文字目の一文字だけを範囲指定する時は re_region 2,3 となります。
RE_MATの設定で範囲は先頭から最後までにリセットされます。
[例] [smp_re1.bas]
10 re_ptn "(\d+)(\w+)"
20 re_mat "abc 123xx def 456zz "
30 re_region 10,19
40 print re_find()
50 print re_grp$()
[結果]
-1
456zz
RE_FIND |
[機能] マッチング文字列から正規表現のパターンで検索して有無(-1,0)を返します。
[書式] RE_FIND()
[説明]
見つかった時は-1を無い時は0を返します。
ここで見つかった文字列と位置をRE_GRP,RE_ST,RE_ENDで返します。
2回目の検索をすると前回の文字列の次の位置からの検索となります。
RE_MATの設定で位置は先頭に戻ります。
[例]
10 re_ptn
"def"
20 re_mat "abc 123xx def 456zz
"
30 print re_find()
[結果]
-1
RE_GRP$ |
[機能] 'RE_FIND'でマッチしたグループの文字を返します。
[書式] RE_GRP$([グループ番号])
[説明]
パターン内の()で囲われたグループは左から1番、2番…と番号があります。
グループ番号は何番目のものを取得するかを指定します。
グループ番号が0または省略の時は全体のパターンによる文字列を返します。
[例] [smp_re2.bas]
10 re_ptn "(\d+)(\w+)"
20 re_mat "abc 123xx def 456zz "
30 print re_find()
40 print re_grp$()
50 print re_grp$(2)
[結果]
-1
123xx
xx
RE_ST |
[機能] 'RE_FIND'でマッチしたスタート位置を返します。
[書式] RE_ST()
[説明]
1文字目が位置0になります。(Javaの数え方と同じです)
[例]
10 re_ptn
"(\d+)(\w+)"
20 re_mat "abc 123xx def
456zz "
30 print re_find()
40 print re_grp$()
50 print re_st()
[結果]
-1
123xx
4
RE_END |
[機能] 'RE_FIND'でマッチした末尾位置を返します。
[書式] RE_END()
[説明]
1文字目の終わりが位置1になります。(Javaの数え方と同じです)
[例]
10 re_ptn "(\d+)(\w+)"
20 re_mat "abc 123xx def 456zz "
30 print re_find()
40 print re_grp$()
50 print re_end()
[結果]
-1
123xx
9
RE_REP$ |
[機能] マッチング文字列で最初にパターンに該当する部分を置換え文字列で置換えます。
[書式] RE_REP$("置換え文字列")
[説明]
置き換え開始位置はRE_REGIONで指定できます。
[例]
10 re_ptn
"cm"
20 re_mat "abc 123cm def 456cm
"
30 print re_rep$("km")
[結果]
abc 123km
def 456cm
RE_REPALL$ |
[機能] マッチング文字列でパターンに該当する部分を全て置換え文字列で置換えます。
[書式] RE_REPALL$("置換え文字列")
[説明]
文字列の置換えに使用します。
[例] [smp_re3.bas]
10 re_ptn "cm"
20 re_mat "abc 123cm def 456cm "
30 r$=re_repall$("km")
40 print r$
[結果]
abc 123km
def 456km