4

JavaScript で正規表現の後読みを使用する必要があるため、 Simulating lookbehind in JavaScript (take 2) を見つけました。また、 XRegExpを開発したのは著者の Steven Levithan であることがわかりました。

XRegExp 3.0.0-pre のクローンを作成し、テストしました

後読みロジック http://regex101.com/r/xD0xZ5 XRegExp を使用

var XRegExp = require('xregexp');
console.log(XRegExp.replace('foobar', '(?<=foo)bar', 'test'));

機能していないようです。

$ node test
foobar

何が恋しいですか?ありがとう。

編集:私の目標は次のようなものです

(?<=foo)[\s\S]+(?=bar)

http://regex101.com/r/sV5gD5

(EDIT2リンクが間違っていて修正されました)

答え:

var str = "fooanythingbar";
console.log(str);
console.log(str.replace(/(foo)(?:[\s\S]+(?=bar))/g, '$1test'));

//footestbar

クレジットは @Trevor Senior に送られます。

4

2 に答える 2

1

これには、非キャプチャ グループを使用できます。

$ node
> 'foobar'.replace(/(foo)(?:bar)/g, '$1test')
'footest'

String.replaceの 2 番目のパラメーターでは、特別な記法 が$1最初のキャプチャー グループを参照し(foo)ます。この場合です。を使用することで、最初に一致したグループのプレースホルダー$1testと考えることができます。$1展開すると になり'footest'ます。

正規表現の詳細については、ここで一致するものを参照してください。

于 2013-08-09T23:00:05.140 に答える