2016-11-07 2 views
-1

条件:
aで始まりbで中間のchar桁を持つ単語。javacriptで以下の条件の正規表現は何でしょうか?

a1b a2b a3b 
#a4b a5b a6b 
a7b a8b a9b 

予想される出力:

a1b 
a2b 
a3b 
a7b 
a8b 
a9b 

正規表現:?私は必要なこの言葉は、文字列を考えると '#' 文字で始まる行に

すべきではありませんそれはjavascipt用です。

これまでの事の下に試してみました:

var text_content =above_mention_content 
var reg_exp = /^[^#]?a[0-9]b/gmi; 
var matched_text = text_content.match(reg_exp); 
console.log(matched_text); 

Getting below output: 

[ 'A1B'、 'A7B']

+2

私はあなたの質問に投票しませんでしたが、少なくともあなたがこれまでに試したことを私たちに示してください。 – Ismail

+0

ok..thanks for feedback..i私の努力で私の質問が更新されます – Vikash

+0

@hamismは質問を更新しました。もしあなたに何か考えがあれば..pls share .. – Vikash

答えて

1

あなた/^[^#]?a[0-9]b/gmiそして、1行の先頭にマッチするパターンの複数の出現と一致しますか#以外の0文字、次にa、数字とb。単語全体をチェックすることも、文字列の先頭よりも実際に一致する単語を検索することもありません。

あなたは#と一致で始まる行と一致し、あなたが他のコンテキストで必要単語をキャプチャします正規表現を使用することがあります。

var s = "a1b a2b a3b\n#a4b a5b a6b\n a7b a8b a9b"; 
 
var res = []; 
 
s.replace(/^[^\S\r\n]*#.*|\b(a\db)\b/gm, function($0,$1) { 
 
    if ($1) res.push($1); 
 
}); 
 
console.log(res);

パターンはの詳細:

  • ^ - ラインの開始(mマルチ剤は^マッチラインの開始を行うように)
  • [^\S\r\n]* - 0+水平空白
  • #.*から#及び任意0+線
  • |
  • の端まで文字 - または
  • \b - 大手ワード境界
  • からa、桁をキャプチャグループ1、b
  • \b - 末尾の単語境界。 replace()方法内側

resアレイのみグループ1の内容が取り込まれる場合、コールバックが使用されます。

+0

wow ...あまりにもありがとう...これははるかに参考になります。私は与えられたコードのシナリオに合った正規表現だけではそれができません。 – Vikash

+0

行全体をスキップして、個々の単語を1つのJS正規表現にマッチさせることはできません。 PCREでは、それは簡単でしょう。 –

+0

ok ..yeah..thatは制約です。私はjsがちょうどregexを通していくつかの解決策を持つと思っていました。私はurソリューションを使用します。 – Vikash

1

I 2のREG EXを使用することをお勧め:

^[^#][a\db\s]+ 

と(各行の)個々の単語を取得するため、別のREG EX:

^a\db\s 
まずレッグexは、非ハッシュラインをフェッチ
関連する問題