QA@IT

正規表現で完全一致で単語を取得できない

457 PV

TypeScriptで特定の単語を正規表現で取得したいと思いサンプルなどを調べていました。
目的として、テキストを取得し、特定の語を完全一致で取得したいと思いプログラムを
作成しています。

サンプルとして、下記のプログラムは実行できることを確認しました。

     var str = 'the first 3 letters of the alphabet are abc. not abc123';
     var s = "abc";
     var regexp = eval("/\\b(" + s + ")\\b/g;"); //完全一致させるための正規表現
     console.log(str.search(regexp));

しかし、実際にテキストからドキュメントを取得し同じように正規表現で判定させようとすると
「-1」が帰ってきてしまいます。
原因が分からないので、助言をいただければ幸いです。よろしくお願いします。

'use strict';
import * as vscode from 'vscode';
import * as fs from 'fs';

export function activate(context: vscode.ExtensionContext) {
    console.log('Congratulations, your extension "semieditor" is now active!');
    const readJson = JSON.parse(fs.readFileSync('C:\\Users\\神龍\\shin\\src\\parent_dict.json','utf8'));

    context.subscriptions.push(vscode.commands.registerCommand('extension.color', () => {
        vscode.window.showInformationMessage("Color Range Word");
        const strengthTimeWordList = readJson.強時間;

        function decorateWord() {
            const activeEditor = vscode.window.activeTextEditor;
            const text = activeEditor.document.getText(); //ドキュメント取得
            for (let i = 0; i < strengthTimeWordList.length; i++){
                let word = strengthTimeWordList[i].split('=>');
                let rangeWord = word[0]; //jsonファイル内の左辺(矢印の左側の単語)
                let rangeWordreg = eval("/\\b(" + rangeWord + ")\\b/g;");
                console.log(text.search(rangeWordreg));
            }
        }
        decorateWord();
    }));

{
    "強時間":["現在=>設置している",
            "(現在=>設置している",
            "現在は=>使わず"
          ]
}

<取得したテキスト>
現在はあるものを使わず、別のものを使用している。
・現在設置しているものを使用すること。
(現在設置している機器の仕様)

<実行結果>
Congratulations, your extension "semieditor" is now active!
-1
-1
-1

※最終目標として、jsonファイル内の矢印の左と右の単語それぞれで
対応させてその単語だけハイライトで表示するようにしたい。

ウォッチ

この質問への回答やコメントをメールでお知らせします。