モジュールのレッスン (4/4)
正規表現で分割する
String.prototype.split(separator) は固定文字列だけでなく、
区切り文字として 正規表現 も使用できます。これにより、トークン化するための強力なツールになります
構造化されたテキスト。
'uno, due,tre quattro'.split(/[,\s]+/);
// ["uno", "due", "tre", "quattro"]正規表現 /[,\s]+/ は、「1 つ以上のカンマまたは空白」に一致します: split
複合区切り文字で分割します。
典型的なケース
- 許容的な CSV:
text.split(/\s*,\s*/)はカンマの前後のスペースを処理します。 - 単純なトークナイザー:
text.split(/\s+/)単語を抽出します。 - 区切り文字を保持します: 正規表現にキャプチャ グループが含まれている場合、 グループのコンテンツは結果の配列に含まれます。
'a=1; b=2; c=3'.split(/(;)\s*/);
// ["a=1", ";", "b=2", ";", "c=3"]() グループがないと、セミコロンが表示されなくなります。 (;) を使用すると、それを保持できます
結果的には。
分割操作での区切り文字の保持
キャプチャ括弧内に分割セパレータを配置すると、String.prototype.split の出力には、セパレータ自体が破棄されるのではなく、最終配列の要素として含まれます。
試してみてください
すべての許容可能な CSV 区切り文字 (カンマとその前後にオプションのスペースを含む) を検索します。このようにして、分割で使用してリストをトークン化できます。
ヒントを表示
オプションのスペースを吸収するには、カンマの前後に \\s* を使用します。
3 回の試行後に解決策が利用可能になります
復習演習
すべての「スペースまたはセミコロン」区切り文字 (1 つ以上) を検索します。このように分割すると、テキストが単語にトークン化されます。
ヒントを表示
\\s と ; を組み合わせます。クラス [\\s;] 内で + 量指定子を使用します。
3 回の試行後に解決策が利用可能になります
追加の課題
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 回の試行後に解決策が利用可能になります