2014-07-08 3 views
-7

정규식에 대한 경험이 많지 않습니다. 필자의 경우, <text> 태그와 <music> 태그의 내용을 아래 문자열로 가져 오려고합니다. 일치자바 스크립트 정규식 태그 (예 : HTML)

문자열 :

"<text>Chủ nhật, ngày 24 tháng 5 năm 1863, giáo sư Lidenbrockenbrock vội vã trở về ngôi nhà của ông ở số 19 đường Konigstasse, nằm trong khu phố cổ kính nhất ở thành phố Hambourg.</text><music>abc.wav</music>"

결과 :

["Chủ nhật, ngày 24 tháng 5 năm 1863, giáo sư Lidenbrockenbrock vội vã trở về ngôi nhà của ông ở số 19 đường Konigstasse, nằm trong khu phố cổ kính nhất ở thành phố Hambourg."]

[ "abc.wav"결과는 2 배열도 이하인 것 ]

답변

-1

Arr 결과에 ays가 필요합니까? 다음 코드에서는 배열을 제외하고 원하는 내용을 가져올 수 있습니다. 배열을 원하면 그냥 내용을 래핑하십시오. 문자열은 줄 바꿈 \r\n로 빨아 때

/** 
* If <music> always follows <text> 
*/ 
var matches = /<text>([\s\S]+?)<\/text>\s*<music>([\s\S]+?)<\/music>/.exec(STRING_TO_MATCH); 
var text, music; 
if (matches) { 
    text = matches[0]; // <text> content 
    music = matches[1]; // <music> content 
} 

/** 
* Otherwise 
*/ 
var text = /<text>([\s\S]+?)<\/text>/.exec(STRING_TO_MATCH); 
var music = /<music>([\s\S]+?)<\/music>/.exec(STRING_TO_MATCH); 
if (text) text = text[0]; 
if (music) music = music[0]; 
+0

내 질문에 대답 해 주셔서 대단히 감사합니다. 그러나 문자열에 줄 바꿈 '\ r \ n'이 있으면 작동하지 않습니다. – haind

+0

@ user3196636 업데이트 됨. – taggon

-1

때문에, @taggon의 코드가 작동하지 않습니다. 그래서 나는 그것 앞에 한 줄을 더했습니다. 괜찮을 것입니다 :

STRING_TO_MATCH = STRING_TO_MATCH.replace(/(?:\r\n|\r|\n)/g, '<br/>'); 

/** 
* If <music> always follows <text> 
*/ 
var matches = /<text>(.+?)<\/text>\s*<music>(.+?)</music>/.exec(STRING_TO_MATCH); 
var text, music; 
if (matches) { 
    text = matches[0]; // <text> content 
    music = matches[1]; // <music> content 
} 

/** 
* Otherwise 
*/ 
var text = /<text>(.+?)<\/text>/.exec(STRING_TO_MATCH); 
var music = /<music>(.+?)<\/music>/.exec(STRING_TO_MATCH); 
if (text) text = text[0]; 
if (music) music = music[0];