メインコンテンツにスキップ
モジュール 7 · レッスン 4 / 4コース内の 28/32~10 min
モジュールのレッスン (4/4)

正規表現で分割する

String.prototype.split(separator) は固定文字列だけでなく、 区切り文字として 正規表現 も使用できます。これにより、トークン化するための強力なツールになります 構造化されたテキスト。

JS
'uno, due,tre  quattro'.split(/[,\s]+/);
// ["uno", "due", "tre", "quattro"]

正規表現 /[,\s]+/ は、「1 つ以上のカンマまたは空白」に一致します: split 複合区切り文字で分割します。

典型的なケース

  • 許容的な CSV: text.split(/\s*,\s*/) はカンマの前後のスペースを処理します。
  • 単純なトークナイザー: text.split(/\s+/) 単語を抽出します。
  • 区切り文字を保持します: 正規表現にキャプチャ グループが含まれている場合、 グループのコンテンツは結果の配列に含まれます。
JS
'a=1; b=2; c=3'.split(/(;)\s*/);
// ["a=1", ";", "b=2", ";", "c=3"]

() グループがないと、セミコロンが表示されなくなります。 (;) を使用すると、それを保持できます 結果的には。

分割操作での区切り文字の保持

キャプチャ括弧内に分割セパレータを配置すると、String.prototype.split の出力には、セパレータ自体が破棄されるのではなく、最終配列の要素として含まれます。

試してみてください

運動#regex.m7.l4.e1
試行回数: 0読み込み中…

すべての許容可能な CSV 区切り文字 (カンマとその前後にオプションのスペースを含む) を検索します。このようにして、分割で使用してリストをトークン化できます。

エディターを読み込み中…
ヒントを表示

オプションのスペースを吸収するには、カンマの前後に \\s* を使用します。

3 回の試行後に解決策が利用可能になります

復習演習

運動#regex.m7.l4.e2
試行回数: 0読み込み中…

すべての「スペースまたはセミコロン」区切り文字 (1 つ以上) を検索します。このように分割すると、テキストが単語にトークン化されます。

エディターを読み込み中…
ヒントを表示

\\s と ; を組み合わせます。クラス [\\s;] 内で + 量指定子を使用します。

3 回の試行後に解決策が利用可能になります

追加の課題

運動#regex.m7.l4.e3
試行回数: 0読み込み中…

Write a regex to use in a split that separates numbers while keeping math operators `+`, `-`, `*`, `/` as elements of the array.

エディターを読み込み中…
ヒントを表示

Enclose the math operators character class in capture parentheses to preserve them in the split array.

3 回の試行後に解決策が利用可能になります