2016-09-23 4 views
6

Gitlab CIでは、ステートメントコードカバレッジを抽出する正規表現を指定する必要があります(表示できるように)。 (ここを参照してください:http://regexr.com/3e9sl)を/Statements.*(\d+\%)/istanbulテキスト要約レポーターから正規表現を使ってテストカバレッジを抽出するにはどうすればよいですか?

... (other build output) 
=============================== Coverage summary =============================== 
Statements : 53.07% (95/179) 
Branches  : 66.67% (28/42) 
Functions : 30.99% (22/71) 
Lines  : 50.96% (80/157) 
================================================================================ 
... (other build output) 

これは一部Statements : 53.07%浮き彫りに:下のビルド出力(冗談とイスタンブールで)を考えると、私は限り来ることができました。しかし、私は53.07の部分だけにマッチする必要があります、どうすればいいですか?私は唯一の53.07一部と一致する必要が

答えて

8

怠惰.*?使用、また、浮動小数点数と一致し、キャプチャグループにアクセスするために(?:\.\d+)?を追加します。

var re = /Statements.*?(\d+(?:\.\d+)?)%/; 
 
var str = '... (other build output)\n=============================== Coverage summary ===============================\nStatements : 53.07% (95/179)\nBranches  : 66.67% (28/42)\nFunctions : 30.99% (22/71)\nLines  : 50.96% (80/157)\n================================================================================\n... (other build output)'; 
 
var res = (m = re.exec(str)) ? m[1] : ""; 
 
console.log(res);

Statements.*?(\d+(?:\.\d+)?)%はまた、float ts。

パターン説明

  • Statements - 文字列リテラル
  • .*? - 空白以外のゼロ個以上の文字が、可能
  • (\d+(?:\.\d+)?)限り少ない - グループ1(あなたが必要とする値このグループにはキャプチャされます)、1桁以上の数字をキャプチャし、その後に.と1桁の任意のシーケンスをキャプチャします。
  • % - パーセント記号(印刷する必要がある場合は、かっこ内に入れてください)

regex demoを参照してください。

+0

ああはいわかります。混乱しているのは、あなたのパターンが正規表現の私のパターンと同じものを強調しているということですが、私がグループにマウスを合わせると、それは '53.07'しか捕捉しなかったことを示しています。 – vkjb38sjhbv98h4jgvx98hah3fef

+0

これをgitlabでテストしたところ、動作確認できました。ありがとう! – vkjb38sjhbv98h4jgvx98hah3fef

+0

オンラインテスターの言葉には注意しないでください。 *ターゲット環境*で最終的に得られるものを信頼してください。 –

関連する問題