난이 정규식있어 확인 : 이제정규식 시행 일치
^[\w\s]+=["']\w+['"]
정규식이 일치합니다 :
A HREF = '구글에서'
A HREF는 = "구글을"
및 also
a href = 'google'
어떻게 정규식을 인용 부호와 일치시킬 수 있습니까? 첫번째 견적 따옴표 인 경우
, 나는 또한 지난 인용 따옴표없는 따옴표
난이 정규식있어 확인 : 이제정규식 시행 일치
^[\w\s]+=["']\w+['"]
정규식이 일치합니다 :
A HREF = '구글에서'
A HREF는 = "구글을"
및 also
a href = 'google'
어떻게 정규식을 인용 부호와 일치시킬 수 있습니까? 첫번째 견적 따옴표 인 경우
, 나는 또한 지난 인용 따옴표없는 따옴표
에 대한 backreferences을 읽어보십시오. 두 번째 +
후 ?
을 데려 가고 싶다는 그렇지 않으면이 욕심 것이다
^[\w\s]+=(["'])\w+?\1
참고. 그러나 일반적으로 HTML을 구문 분석하는 올바른 방법은 아닙니다. Beautiful Soup을 사용하십시오.
할 수있는 방법이 시도 :
^[\w\s]+="\w+"|^[\w\s]+='\w+'
난 당신이 그것에게 먼 길을해야 할 것 두려워 : 인용 부호의 정확한 일치/중첩을 보장, 더 기술적으로
^[\w\s]+=("\w+"|'\w+')
당신이 가진 것보다 복잡한 문제 때문에 정규 문법에 대한 문제가되지 않습니다 적절한 파서 (또는 perl6 스타일의 확장 정규 표현식을 사용하지만 기술적으로 정규 표현식으로 클래스를 사용하지 않음).
사실, 첫 번째 인용문을 캡처 한 다음 역 참조 할 수 있습니다. – katrielalex
그래도 그렇게하면 일반 표현식이 기술적으로 정규 표현식이 아니므로 내 성명을 유지할 수 있습니다 (완벽하게 좋은 방법이지만). – ternaryOperator
가 역 참조 (캡처 그룹)를 사용하는 \1
와 ['"]
를 교체
^[\w\s]+=["']\w+\1
무엇 정확하게 일치시킬 수 있습니까?그것은 당신이 일치 할 소리 :
=
을 될 것이라고 : ^(\w+)\s+(\w+)\s*=\s*(?:'([^']*)'|"([^"]*)")
이
이 같은 경기 수 :
a href=''
- 따옴표 - 인용 부분a href="one 'n two"
에 공백 및 기타 비 단어 문자 - 빈 a href='Hello world'
a href = 'google'
- 양쪽 공백은 =그리고 허용 일 :
a b c href='google'
- 추가 단어='google'
- 왼쪽href='google'
에 공백 만 - 만 왼쪽여전히 정확하게 발음하지 않습니다. 하나의 속성과 정확히 일치하는 태그를 찾으려고합니까? 이 정규 표현식으로
는 태그 이름은 ATTR$2
에 이름을 지정하고 하나
$3
또는
$4
에서 ATTR 값 (다른 것을 전무,
$1
에있을 것입니다 - 대부분의 언어가 전무로 촬영되지 그룹을 구별 그룹
""
경우로 촬영하지만, 빈 대 당신은 그것을 필요로한다). 당신은 이중 인용 ATTR 값과 그 구절에 작은 따옴표를 허용하기를 원한다면 ATTR 값이 같은 그룹에 얻을 수 있도록 할
정규 표현식 메시 될 것이다 - 무언가를 ^(\w+)\s+(\w+)\s*=\s*(['"])((?:(?!\3).)*)\3
((?!)
제로 폭 부정적인 예견처럼 - (?:(?!\3).)
수단을 후자를 제외하고는 [^\3]
과 같은 것)은 지원되지 않습니다.
^(\w+)\s+(\w+)\s*=\s*(['"])(['"]*)\3
이 괜찮 으면 ($3
은 모두 견적 유형이며, $4
attr 값임).
덧붙여서 (["'])\w+?\1
위 - \w
는 따옴표와 일치하지 않으므로이 ?
은 변경되지 않습니다.
사용 가졌어요.다른 언어들은 일반적으로 Perl의 정규 표현식 시스템을 복사하지만 약간의 변경을 도입하기도하므로 약간의 조정이 필요할 수 있습니다. 특히 부정적인 look-ahead가있는 것이 지원되지 않을 수 있습니다.
나는 \ 1이 자바 스크립트에서는 사용되지만 다른 언어에서는 그렇지 않다는 것을 보았다. 다른 언어에서 사용할 수 있습니까? – slier
예. 그것은 정규 표현식의 일부입니다. – katrielalex
예, PHP에서는 작동합니다. – Wrikken