構文
引数
説明
text
(必須) 文字列または文字列を抽出するテキストを含むセルへの参照。ワイルドカード文字は使用できません。テキストが空の文字列の場合、空のテキストを返します。「text」のような文字列、または「C4」のようなセル参照、あるいは「C4:D4」のようなセル範囲参照(動的配列で動作します)を入力できます。
pattern
(必須) 抽出するテキストのパターンを記述する正規表現。この式に一致するテキストの最初の部分が返されます。「[0-9]+」のような文字列、または「C4」のようなセル参照を入力できます。
return_mode
抽出する文字列を指定する数値。0: (デフォルト) パターンに一致する最初の文字列を返します1: パターンに一致するすべての文字列を配列として返します2: 最初の一致からキャプチャ グループを配列として返します
case_sensitivity
一致で大文字と小文字が区別されるかどうかを決定します。0: (デフォルト) 大文字と小文字を区別します1: 大文字と小文字を区別しません
動的配列
allowDynamicArray を false に設定しても、REGEXEXTRACT関数 は引き続き機能します。 ただし、場合によっては、最良の結果を得るために、allowDynamicArray を true に設定する必要がある場合があります。
以下の例では、allowDynamicArray が false の場合、結果として「Luve」が取得され、true の場合は結果として ["Luve", "rose"] が取得されます。
使用例
window.onload = function () {
var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"));
initSpread(spread);
};
function initSpread(spread) {
spread.suspendPaint();
spread.options.allowDynamicArray = true;
var sheet = spread.sheets[0];
var defaultStyle = new GC.Spread.Sheets.Style();
defaultStyle.hAlign = GC.Spread.Sheets.HorizontalAlign.center;
defaultStyle.vAlign = GC.Spread.Sheets.VerticalAlign.center;
sheet.setDefaultStyle(defaultStyle);
sheet.setColumnWidth(0, 220);
sheet.setColumnWidth(1, 220);
sheet.setColumnWidth(2, 120);
sheet.setColumnWidth(3, 130);
sheet.setColumnWidth(4, 170);
sheet.setColumnWidth(5, 80);
sheet.setColumnWidth(6, 80);
sheet.addSpan(0, 0, 2, 1);
sheet.addSpan(0, 1, 2, 1);
sheet.addSpan(0, 2, 2, 1);
sheet.addSpan(0, 3, 2, 1);
sheet.addSpan(0, 4, 2, 1);
sheet.addSpan(0, 5, 2, 2);
sheet.getCell(0, 0).value("Text").font("21px bold normal normal");
sheet.getCell(0, 1).value("Regular Expression").font("21px bold normal normal");
sheet.getCell(0, 2).value("Return Mode").font("21px bold normal normal");
sheet.getCell(0, 3).value("Case Sensitivity").font("21px bold normal normal");
sheet.getCell(0, 4).value("Formula Text").font("21px bold normal normal");
sheet.getCell(0, 5).value("Result").font("21px bold normal normal");
var dataArr = [ ["I think SpreadJS is Good", "(good)", "", 1],
["there is 300 rabbits grazing", "\\d+", ""],
["O my Luve is like a red, red rose", "O my (\\w+) is like a red, red (\\w+)", 2]];
sheet.setArray(2, 0, dataArr);
for (var i = 0, len = dataArr.length; i < len; i++) {
var row = 3 + i;
sheet.setFormula(row - 1, 5, `=REGEXEXTRACT(A${row}, B${row}, C${row}, D${row})`);
sheet.setFormula(row - 1, 4, `=FORMULATEXT(F${row})`);
}
spread.resumePaint();
document.getElementById("allowDynamicArray").addEventListener('change', function (e) {
var checked = e.target.checked;
spread.options.allowDynamicArray = !!checked;
spread.resumeCalcService();
spread.resumePaint();
});
}
<!doctype html>
<html style="height:100%;font-size:14px;">
<head>
<meta charset="utf-8" />
<meta name="spreadjs culture" content="ja-jp" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" type="text/css"
href="$DEMOROOT$/ja/purejs/node_modules/@mescius/spread-sheets/styles/gc.spread.sheets.excel2013white.css">
<script src="$DEMOROOT$/ja/purejs/node_modules/@mescius/spread-sheets/dist/gc.spread.sheets.all.min.js"
type="text/javascript"></script>
<script src="$DEMOROOT$/ja/purejs/node_modules/@mescius/spread-sheets-resources-ja/dist/gc.spread.sheets.resources.ja.min.js" type="text/javascript"></script>
<script src="$DEMOROOT$/spread/source/js/license.js" type="text/javascript"></script>
<script src="app.js" type="text/javascript"></script>
<link rel="stylesheet" type="text/css" href="styles.css">
</head>
<body>
<div class="sample-tutorial">
<div id="ss" class="sample-spreadsheets"></div>
<div class="options-container">
<div class="option-row">
<label class="colorLabel">allowDynamicArray フラグを切り替えます。</label>
</div>
<div class="option-row">
<input type="checkbox" id="allowDynamicArray" checked />
<label for="allowDynamicArray">動的配列を許可します</label>
</div>
</div>
</div>
</body>
</html>
.sample-tutorial {
position: relative;
height: 100%;
overflow: hidden;
}
.sample-spreadsheets {
width: calc(100% - 280px);
height: 100%;
overflow: hidden;
float: left;
}
.options-container {
float: right;
width: 280px;
overflow: auto;
padding: 12px;
height: 100%;
box-sizing: border-box;
background: #fbfbfb;
}
.option-row {
margin-bottom: 12px;
}
label {
user-select: none;
}
body {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}