2014-05-14 5 views
0

shortcode 특성의 큰 따옴표 안에 큰 따옴표를 지우는 정규식을 작성하려고합니다. 따옴표 사이의 따옴표를 지우는 정규식

나는이 정규식

\="(.*?)\" 

을 썼다는 http://regex101.com/r/jW0uC4

하지만 또한 그래서 http://regex101.com/r/pL9bI0

실패 따옴표가 들어 속성 ​​값을 가질 때 내가 어떻게 할 수를 따옴표 사이의 문자열과 일치 = "와 마지막 사이의 문자열 만 잡으므로 정규식을 향상 시키십시오.

미리 감사드립니다.

+0

"quotes"및 "html tags
" "이 (가)있는'title ="Title은 유효하지 않습니다. 이 따옴표는 \ "quotes \"및 \ "html 태그
\" "'이있는'title ="Title처럼 이스케이프되어야합니다. 그리고 그 경우 정규 표현식이나 비슷한 것으로 lookbehind를 사용할 수 있습니다. –

+0

@GergoErdosi 예, 그들이 유효하지 않다는 것을 알고 있습니다. 사용자가 잘못 사용하면 문제를 바로 잡으려고합니다. 그것은 매우 흔한 실수입니다. – user3213174

+0

HTML 속성 값 내의 모든 인용 부호를 이스케이프하려면 반드시 '"'을 사용해야합니다. 따옴표 자체를 사용하는 것은 프로토콜 위반입니다. 그리고 그들을 피할 수있는 다른 방법은 없습니다. –

답변

0

이 정규식은 제공되는 샘플 텍스트와 일치 :

/="(.*?)"(?=\s*(?:[a-z]+=|]))/ 

설명 :

="      '="' 
    (      group and capture to \1: 
    .*?      any character except \n (0 or more times 
          (matching the least amount possible)) 
)      end of \1 
    "      '"' 
    (?=      look ahead to see if there is: 
    \s*      whitespace (\n, \r, \t, \f, and " ") (0 
          or more times (matching the most amount 
          possible)) 
    (?:      group, but do not capture: 
     [a-z]+     any character of: 'a' to 'z' (1 or 
           more times (matching the most amount 
           possible)) 
     =      '=' 
    |      OR 
     ]      ']' 
    )      end of grouping 
)      end of look-ahead 

그러나 사용자 오류는 해결하기 어려운이 정규식 예 경우 텍스트 (모든 경우에 작동하지 않을 수 있습니다 = 문자 포함). 사용자 입력이 제대로 이스케이프 처리되는지 확인해야합니다.

+0

그게 다야! 브라보! 고맙습니다! – user3213174

관련 문제