2016-09-23 13 views
6

Gitlab CI yêu cầu bạn chỉ định một regex để trích xuất phạm vi mã báo cáo (để chúng có thể hiển thị nó). Với việc xây dựng sản lượng thấp hơn (với jest và istanbul), tôi đã quản lý để đi xa như: /Statements.*(\d+\%)/Làm cách nào để trích xuất vùng phủ sóng thử nghiệm từ phóng viên tóm tắt văn bản istanbul với regex?

... (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) 

này nhấn mạnh phần Statements : 53.07% (xem ở đây: http://regexr.com/3e9sl). Tuy nhiên, tôi chỉ cần kết hợp phần 53.07, làm cách nào để làm điều đó?

Trả lời

8

tôi cần phải phù hợp với chỉ phần 53.07,

Sử dụng lười biếng .*?, thêm (?:\.\d+)? cũng để phù hợp với phao, và truy cập vào nhóm chụp:

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);

Lưu ý rằng Statements.*?(\d+(?:\.\d+)?)% cũng cho phép các giá trị số nguyên, không chỉ floa ts.

Pattern mô tả:

  • Statements - một chuỗi chữ
  • .*? - zero hoặc nhiều ký tự khác ngoài khoảng trắng, nhưng càng ít càng tốt
  • (\d+(?:\.\d+)?) - Nhóm 1 (giá trị mà bạn cần sẽ được chụp vào nhóm này) thu thập hơn 1 chữ số và một chuỗi tùy chọn gồm . và 1 + chữ số sau số đó
  • % - dấu phần trăm (nếu bạn cần in, hãy di chuyển dấu ngoặc đơn bên trong dấu ngoặc đơn ở trên)

Xem regex demo.

+0

Ah vâng tôi hiểu. Điều khó hiểu là mô hình của bạn nổi bật giống như mẫu của tôi trên regexr, nhưng khi tôi di chuột qua nhóm nó cho thấy nó chỉ bắt được '53.07', vì vậy nó hoạt động như nó nên từ những gì tôi có thể nói, phải không? – vkjb38sjhbv98h4jgvx98hah3fef

+0

Chỉ cần thử nghiệm này với gitlab, và tôi có thể xác nhận nó hoạt động. Cảm ơn! – vkjb38sjhbv98h4jgvx98hah3fef

+0

Không chú ý đến những gì người kiểm tra trực tuyến nói. Tin tưởng những gì bạn nhận được cuối cùng trong môi trường * đích *. –

Các vấn đề liên quan