programing

JavaScript Regex를 사용하여 문자열을 추출하는 방법은 무엇입니까?

javamemo 2023. 7. 29. 08:06
반응형

JavaScript Regex를 사용하여 문자열을 추출하는 방법은 무엇입니까?

JavaScript Regex 파일에서 하위 문자열을 추출하려고 합니다.다음은 파일의 일부입니다.

DATE:20091201T220000
SUMMARY:Dad's birthday

제가 추출하고 싶은 분야는 "요약"입니다.다음은 접근 방식입니다.

extractSummary : function(iCalContent) {
  /*
  input : iCal file content
  return : Event summary
  */
  var arr = iCalContent.match(/^SUMMARY\:(.)*$/g);
  return(arr);
}
function extractSummary(iCalContent) {
  var rx = /\nSUMMARY:(.*)\n/g;
  var arr = rx.exec(iCalContent);
  return arr[1]; 
}

다음과 같은 변경 사항이 필요합니다.

  • 집어넣어요*위에서 제안한 대로 괄호 안에 있습니다.그렇지 않으면 일치하는 그룹에 문자가 하나만 포함됩니다.

  • 제거합니다.^그리고.$글로벌 옵션을 사용하면 줄의 시작과 끝이 아닌 전체 문자열의 시작과 끝에서 일치합니다.대신 명시적인 새 줄에 일치시킵니다.

  • 전체 배열보다 일치하는 그룹(괄호 안에 무엇이 있는지)을 원하는 것 같습니다.arr[0]전체 일치("\nSUMMARY:..."다음 인덱스에는 그룹 일치 항목이 포함됩니다.

  • String.match(regexp)는 일치하는 배열을 반환해야 합니다.내 브라우저에서는 그렇지 않지만(Mac의 Safari는 그룹이 아닌 전체 일치 항목만 반환함) Regexp.exec(string)은 작동합니다.

다음을 사용해야 합니다.m 플래그:

다중 줄, 시작 문자와 끝 문자(^ 및 $)를 여러 줄에 걸쳐 작업하는 것으로 간주합니다(즉, 전체 입력 문자열의 시작 또는 끝만 일치하는 것이 아니라 각 줄의 시작 또는 끝(\n 또는 \r로 구분됨).

또한,*적절한 장소에서:

"DATE:20091201T220000\r\nSUMMARY:Dad's birthday".match(/^SUMMARY\:(.*)$/gm);
//------------------------------------------------------------------^    ^
//-----------------------------------------------------------------------|

당신의 규칙적인 표현은 아마도

/\nSUMMARY:(.*)$/g

제가 사용하는 유용한 작은 트릭은 배열과 일치할 때 기본 할당하는 것입니다.

var arr = iCalContent.match(/\nSUMMARY:(.*)$/g) || [""]; //could also use null for empty value
return arr[0];

이렇게 하면 사용할 때 성가신 유형 오류가 발생하지 않습니다.arr

(.*)대신에(.)*시작이 될 것입니다.후자는 줄의 마지막 문자만 캡처합니다.

또한, 탈출할 필요가 없습니다.:.

이 코드는 작동합니다.

let str = "governance[string_i_want]"; 
let res = str.match(/[^governance\[](.*)[^\]]/g);
console.log(res);

res는 "string_i_message"와 같습니다.그러나 이 예에서 res는 여전히 배열이므로 res를 문자열처럼 취급하지 마십시오.

원하지 않는 문자를 그룹화하고 [^string]을 사용하여 괄호 사이에 있는 것을 일치시킴으로써 코드는 내가 원하는 문자열을 추출합니다!

여기에서 사용해 보실 수 있습니다. https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_match_regexp

행운을 빌어요.

다음을 사용해야 합니다.

var arr = iCalContent.match(/^SUMMARY\:(.)*$/g);
return(arr[0]);

이것이 자바스크립트로 iCal 파일을 구문 분석할 수 있는 방법입니다.

    function calParse(str) {

        function parse() {
            var obj = {};
            while(str.length) {
                var p = str.shift().split(":");
                var k = p.shift(), p = p.join();
                switch(k) {
                    case "BEGIN":
                        obj[p] = parse();
                        break;
                    case "END":
                        return obj;
                    default:
                        obj[k] = p;
                }
            }
            return obj;
        }
        str = str.replace(/\n /g, " ").split("\n");
        return parse().VCALENDAR;
    }

    example = 
    'BEGIN:VCALENDAR\n'+
    'VERSION:2.0\n'+
    'PRODID:-//hacksw/handcal//NONSGML v1.0//EN\n'+
    'BEGIN:VEVENT\n'+
    'DTSTART:19970714T170000Z\n'+
    'DTEND:19970715T035959Z\n'+
    'SUMMARY:Bastille Day Party\n'+
    'END:VEVENT\n'+
    'END:VCALENDAR\n'


    cal = calParse(example);
    alert(cal.VEVENT.SUMMARY);

언급URL : https://stackoverflow.com/questions/1707299/how-to-extract-a-string-using-javascript-regex

반응형