2017-11-05 9 views
-1

正規表現を使用して、たとえば「0」文字と一致させようとしています。 しかし、引用符で囲まれていない0は一致したければ閉じられません。JS Regex:引用符で囲まれていない場合は、文字列にマッチします。

入力文字列の例を示します。一致する0の文字列が示されています。

abc"0 
"hi 0 bye 
"00 
0 //match here 
If 0 //match here 
If (00) //match here, with both zeros being in the same capture group. 
hell0 w0rld //match here, each zero being different 
"0" 
"00" 
5*0 // match here 
00 //match here, with both zeros being in the same capture group. 

他のスレッドでスニペットを修正しようとしましたが、役に立たなくなりました。 主に、自分のニーズに合わせて(?!\B"[^"]*)0(?![^"]*"\B)(別のスレッドに投稿)を変更することはできましたが、できませんでした。

ありがとうございます。

ような何か

答えて

1

^[^"]*?(0+)[^"]*?$ 

が動作するはずです。

これは、基本的に0を含み、引用符を含まない行に一致します。ゼロはグループ内に取り込まれます。

let str = `abc"0 
 
"hi 0 bye 
 
"00 
 
0 //match here 
 
If 0 //match here 
 
If (00) //match here, with both zeros being in the same capture group. 
 
hell0 w0rld //match here, each zero being different 
 
"0" 
 
"00" 
 
5*0 // match here 
 
00 //match here, with both zeros being in the same capture group.` 
 

 
str.split("\n").forEach(s => console.log((/^[^"]*?(0+)[^"]*?$/g).exec(s)));

+0

ありがとう!それも本当に明白です。ゼロに貪欲な演算子を追加して、利用可能なゼロをすべて取得するようにしてください。 – iPhoenix

+1

良い点!そこに0以上のゼロを持つサンプルを扱うように更新されました。 – user184994

関連する問題