2012-10-30 3 views
0

을 구문 분석 내가 정규식을 찾고 있어요 . 이 정규식을 완료하는 방법이 있습니까?정규 표현식은

+1

정규식은 패턴에만 일치합니다. 문자열을 변경하지 않습니다. 어떤 언어를 사용 하시겠습니까? –

+0

Objective-C를 사용하고 있습니다. – seb

답변

1

이 작업을 올바르게 수행하는 것은 일반적으로 정규 표현식의 기능을 뛰어 넘습니다.

\{([^}]+)}(.*?)\{/\1} 

설명 :

\{  # a literal { 
(  # capture the tag name 
[^}]+) # everything until the end of the tag (you already had this) 
}   # a literal } 
(  # capture the tag's value 
.*?)  # any characters, but as few as possible to complete the match 
      # note that the ? makes the repetition ungreedy, which is important if 
      # you have the same tag twice or more in a string 
\{  # a literal { 
\1  # use the tag's name again (capture no. 1) 
}   # a literal } 
당신이 그 태그가 중첩되지 않을 것이라는 점을 보장 할 수있는 귀하의 의견 태그를 의미하지 않습니다 중괄호를 포함하지 않을 경우, 다음이 정규식 매칭을 할 수

그래서 이것은 역 참조 \1을 사용하여 닫는 태그가 시작 태그와 같은 단어를 포함하고 있는지 확인합니다. 그런 다음 캡처의 태그 이름은 1이고 캡처 태그 값/내용은 2입니다. 여기에서 원하는대로 (예 : 값을 다시 입력) 원하는 작업을 수행 할 수 있습니다.

태그를 여러 줄에 걸쳐 사용하려면 SINGLELINE 또는 DOTALL 옵션을 사용해야합니다.

+0

사실,이 정규식을 사용하여 HTML 코드의 < div >과 < p > HTML 태그 사이의 모든 텍스트를 가져옵니다. 나는 {and}를 < and >으로 대체하려고 시도했지만 작동하지 않습니다. 생각이 뭡니까? – seb

+0

@seb 태그에 속성이 포함되어 있습니까? 'SINGLELINE' 또는'DOTALL' 옵션을 사용합니까 (Objective C로 설정하는 방법을 모르겠습니다, 죄송합니다). 또한 HTML을 파싱하는 경우 ** DOM 파서를 대신 사용하십시오. –

+0

예, 태그에 가끔 속성이 있습니다. – seb