「a」から「c」への文字列を削除するためのこのコードを書きます
var str = "abcbbabbabcd";
var re = new RegExp("a.*?c","gi");
str = str.replace(re,"");
console.log(str);
コンソールの結果は「bbd」です
しかし、私にとって正しい結果は「bbabbd」です
この問題に正規表現を使用できますか?
助けてくれてありがとう。
「a」から「c」への文字列を削除するためのこのコードを書きます
var str = "abcbbabbabcd";
var re = new RegExp("a.*?c","gi");
str = str.replace(re,"");
console.log(str);
コンソールの結果は「bbd」です
しかし、私にとって正しい結果は「bbabbd」です
この問題に正規表現を使用できますか?
助けてくれてありがとう。
a(?:(?!a).)*c
ベースの正規表現を使用しlookahead
ます。デモを参照してください。最初の後にも.*?
消費します。それを停止するには、.a
a
lookahead
https://regex101.com/r/cJ6zQ3/34
編集:
a[^a]*c
negated character class
1キャラしかないので実際に使えます。
はg
グローバル正規表現であることを意味し、文字列内のabc
との両方を取得することを意味abbabc
します。したがって、これは からアイテムを適切に削除しますa..c
。2 つしか見ておらずabc
、 を見逃したようですabbabc
。結果bbd
は、実際には"remove string from 'a' to 'c'" であるため、実際には正しいです。
abc
bb
abbabc
d => bbd
正規表現を に更新する必要があります。これにより、との間のa[^ac]*?c
文字が回避されます。a
c
a
c
var str = "abcbbabbabcd";
var re = new RegExp("a[^ac]*?c","gi");
str = str.replace(re,"");
console.log(str);