計算式プラグインで、ドロップダウンから文字列を抜き出す例です。
概要
ドロップダウンの文字列から、"【】"で囲まれた文字列を抜き出してみます。
FIND 関数、REPLACERE 関数、MATCH 関数を使った例です。
ドロップダウンの設定値なら、例外になる値は無いと思いますが、
例外として"【】"で囲まれていないケースも試してみます。
計算式プラグイン設定
"【】"で囲まれた文字列を抜き出すには、MATCH 関数が簡潔に記述できるようです。
- 文字列1:FIND 関数
- 【】の位置を取得して文字列を抜き出す
- 文字列2:REPLACERE 関数
- 正規表現で【】で囲まれている文字を抜き出す
- "【】"で囲まれている文字が無いと不要な文字を出力
- 文字列3:REPLACERE 関数(例外処理追加)
- 【】が無いケースを除外
- 文字列4:MATCH 関数
OPTION:
// テーブル.文字列1 SINGLE_LINE_TEXT
LET(
s, ドロップダウン,
p1, FIND(s, "【"),
p2, FIND(s, "】"),
IF(AND(p1 >= 0, p2 > p1),
SUBSTR(s, p1 + 1, p2 - p1 - 1),
""
)
)
// テーブル.文字列2 SINGLE_LINE_TEXT
REPLACERE(ドロップダウン, ".*【(.*?)】.*", "g", "$1")
// テーブル.文字列3 SINGLE_LINE_TEXT
LET(
s, ドロップダウン,
IFS(TESTRE(s, ".*【(.*?)】.*"),
REPLACERE(s, ".*【(.*?)】.*", "g", "$1"),
"" // 対象外は空文字
)
)
// テーブル.文字列4 SINGLE_LINE_TEXT
ARRAY_GET(MATCH(ドロップダウン, "【(.*?)】"), 1)
REPLACERE 関数解説
REPLACERE(文字列, 正規表現, フラグ, 置換文字列)
正規表現にマッチした文字列を、指定した置換文字列に変換します。
$1 は 正規表現内の1番目のキャプチャグループを意味します。
REPLACERE("【A01】ABC", ".*【(.*?)】.*", "g", "$1") -> "A01"
// " .*【(.*?)】.* ":正規表現(対象のパターン)
// "g": フラグ(全体一致、今回は省略可)
// "$1" 置換後の文字列(キャプチャ1)
- 正規表現" .【(.?)】.* "の意味:
- 「どこかに【...】が含まれていれば、その中の文字列を抜き出す」**という意味
- .*:任意の文字列(0文字以上、できるだけ多く)
- 【(.*?)】:【 と 】:リテラルの角カッコ
- (.*?):非貪欲に中の文字をキャプチャ(これが $1)
- .*:後続の任意の文字列
- 「どこかに【...】が含まれていれば、その中の文字列を抜き出す」**という意味
MATCH 関数解説
MATCH(文字列, 正規表現) は、正規表現に一致する文字列と、キャプチャグループを含む配列を返します。
g フラグをつけないと、最初にマッチした1件のみが対象になります。
MATCH("【A01】ABC", "【(.*?)】") -> ["【A01】","A01"]
// "【A01】" 正規表現全体に一致した文字列(マッチ全体)
// "A01" (.*?) のキャプチャグループ1の中身(【と】の間)
ARRAY_GET(MATCH("【A01】ABC", "【(.*?)】"), 1) -> "A01"
// MATCH の結果を ARRAY_GET(..., 1) のように使えば、キャプチャグループ1(中身)だけを取得できます。