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
'programing' 카테고리의 다른 글
"히카리풀-1 연결 클로저" java.lang.NoClassDefFoundError: org/mariadb/jdbc/message/client/QuitPacket (0) | 2023.07.29 |
---|---|
키 입력 스크립트를 기준으로 객체 배열을 정렬하는 방법 (0) | 2023.07.29 |
jQuery - 선택한 옵션에서 사용자 지정 특성 가져오기 (0) | 2023.07.29 |
Spring Web Services가 모든 SOAP 요청을 기록하도록 하려면 어떻게 해야 합니까? (0) | 2023.07.29 |
XMLHttpRequest.open()을(를) 재정의합니다. (0) | 2023.07.29 |