0

機能する正規表現を見つけるのに長い時間を費やしたので、私はばかのように感じます。

弦:~05276~^~0500~^~Turkey...

... は、その後に無制限の文字数を指定できることを意味します。私が欲しいのは、チルダなしの最初のチルダ区切りの数字です。テキスト ファイルからいくつかのデータを取得しようとしています。これを行う方法を理解できれば、残りを理解できると思います。

これが私の正規表現です。/^~([\d]+)~/

これは私が得ているものです:

[ '~05276~',
 '05276',
 index: 0,
 input: '~05276~^~0500~^~Turkey...' ]

g 演算子 ( /^~([\d]+)~/g) を使用すると、 , のみが取得され、~05276~必要なのは05726(チルダなし) です。

いくつかの異なる投稿やリソースを見つけましたが、これが期待どおりに機能しない理由がわかりません。これが私が見つけたものです:

Javascript 正規表現 - 中かっこの間のテキストを取得する方法

JavaScript/NodeJS はこれに対応していますか?

編集:

これが私のコードです:

lineReader.eachLine(file, function (line) {
    var entry = {};

    entry.id = line.match(/^~([\d]+)~/);

    console.log(entry);
});

lineReader は正常に動作しており、上記の例の文字列のような行を返します。

4

2 に答える 2

2

あなたの正規表現は(ほとんど)問題ありませんが、おそらく正しく使用していません。数値の配列が必要な場合は、次のようにします。

 var array = [];
 yourString.replace(/~(\d+)~/g, function(_, n) { array.push(n); });

本当に必要ないのは、先頭の「^」アンカーです。

于 2011-03-26T20:48:44.957 に答える
1

/\d+/あなたの例では、チルダの後の最初の数字と一致するために正規表現のみが必要です。あなたの方法は次のようになります。

lineReader.eachLine(file, function (line) {
    var entry = {};
    entry.id = line.match(/\d+/);
    console.log(entry);
});

入力"~05276~^~0500~^~Turkey"すると、結果が得られます"05276"

得られる配列の回答に関しては、括弧、つまりキャプチャ グループがあるためです。それがキャプチャされたグループと一致する場合、左端の括弧から始まる -(\d+)あなたの場合 - 結果配列の2番目のスロットに存在します。最初のスロットには完全一致があり、この場合はチルダが含まれます。

于 2011-03-26T22:17:18.397 に答える