아래 줄이있는 텍스트 파일이 있습니다.
숫자 : 22,55.000,1 (1300.000,1200.999), (1000.888,1222.000), ...
아래 줄을 사용하여 첫 번째 숫자를 추출하지만 이상적으로는 괄호 안의 숫자 만 필요합니다.
output=output.split("\n").filter(/./.test, Numbers/).join("\n").replace(/.*?
(([0-9]*\.)?[0-9]+).*/g, "$1");
괄호 뒤의 4 번째 숫자 인 1300.00을 추출해야합니다.
텍스트 입력이 다음과 같다고 가정합니다 (문자열, 각 행의 형식이 동일 함) . 세 번째 숫자와 대괄호 뒤에 쉼표가 없습니다 .
,1(1
Numbers: 22,55.000,1(1300.000,1200.999),(1000.888,1222.000),...
Numbers: 22,55.000,1(1300.001,1200.999),(1000.888,1222.000),...
...
그리고 출력이 다음과 같아야한다고 가정합니다 (배열이 아닌 자바 스크립트 문자열).
1300.000
1300.001
그런 다음 해결책은 (원래 코드를 최대한 유지)입니다 .
let output =`Numbers: 22,55.000,1(1300.000,1200.999),(1000.888,1222.000),...
Numbers: 22,55.000,1(1300.001,1200.999),(1000.888,1222.000),...
`;
let output0 = output
.split("\n")
.filter(/./.test, /Numbers/)
.join("\n")
.replace(/[^\(]+\(([^,]+).*/g, "$1\n");
// just changing the RegExp
console.info(output0);
// Alternative is to filter the number with the map function
let output1 = output
.split("\n")
// My opinion: better/easy to read/understand would be
// .filter(line => /Number/.test(line))
.filter(/./.test, /Numbers/)
.map(line =>
line.split(/,|\(|\)/).filter(number => number != "")[3])
.join("\n");
console.info(output1);
First Version
은 전체 행과 일치하는 표현식 만 변경하지만 4 번째 숫자를 그룹으로 반환합니다 (= 괄호 안의 첫 번째 숫자).
두 번째 버전
은 줄과 숫자로 나뉩니다. 이 버전에서는 특정 위치에서 단일 번호를 선택하는 것이 매우 쉽습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다