Program Tip

줄로 분할 할 JS 정규식

programtip 2020. 11. 12. 20:06
반응형

줄로 분할 할 JS 정규식


긴 텍스트를 어떻게 별도의 줄로 나눕니 까? 이것이 line1을 두 번 반환하는 이유는 무엇 입니까?

/^(.*?)$/mg.exec('line1\r\nline2\r\n');

[ "line1", "line1"]

나는 확인하기 위해 멀티 라인 수정에 설정 ^하고 $시작하여 라인의 끝과 일치. 또한 모든 라인 을 캡처하기 위해 전역 수정자를 켰습니다 .

정규식 분할을 사용하고 싶지만 String.splitLinux \n와 Windows \r\n줄 끝 을 모두 다룰 것이기 때문이 아닙니다 .


arrayOfLines = lineString.match(/[^\r\n]+/g);

Tim이 말했듯이, 그것은 전체 경기이자 캡처입니다. regex.exec(string)전역 수정 자에 관계없이 첫 번째 일치 항목을 찾으면 반환되는 것으로 보입니다 string.match(regex). Wheras 는 전역을 존중합니다.


사용하다

result = subject.split(/\r?\n/);

정규식은 전체 일치 첫 번째 캡처 그룹의 내용 모두 line1이므로 두 번 반환 됩니다 .line1


나는 다음이 개행을 구성한다고 가정합니다.

  1. \ r 뒤에 \ n
  2. \ n 뒤에 \ r
  3. \ n 혼자서
  4. \ r 혼자서

사용하시기 바랍니다

var re=/\r\n|\n\r|\n|\r/g;

arrayofLines=lineString.replace(re,"\n").split("\n");

빈 줄을 포함하여 모든 줄의 배열에 대해.

또는

사용하시기 바랍니다

arrayOfLines = lineString.match(/[^\r\n]+/g); 

비어 있지 않은 라인의 배열


모든 줄 끝 조합을 처리하고 같은 파일에 혼합 되어도 빈 줄을 제거하는 더 간단한 정규식 :

var lines = text.split(/[\r\n]+/g);

공백 트리밍 :

var lines = text.trim().split(/\s*[\r\n]+\s*/g);


우선 교체 \r\n로를 \n, 다음 String.split .


http://jsfiddle.net/uq55en5o/

var lines = text.match(/^.*((\r\n|\n|\r)|$)/gm);

나는 이와 같은 것을했다. 위의 링크는 내 바이올린입니다.

참고 URL : https://stackoverflow.com/questions/5034781/js-regex-to-split-by-line

반응형