2012-02-24 5 views
0

정규식을 사용하여 문자열의 너비 값을 변경하려고합니다.Python - 정규식에서 변수 사용

폭은 등 width="500px" 또는 width:500px 또는 (따옴표없이) width=500px, 여러 형식을 가질 수 있습니다 ..

현재, 내가 찾고 있어요이

p = re.compile('width="\w{3}') 
embed_url = p.sub('width="555', embed_url) 

# width:"555 
p = re.compile('width:"\w{3}') 
embed_url = p.sub('width:"555', embed_url) 

처럼 개별적으로 교체하는 것은 거기에 어떤 하나의 정규식을 사용하고 문자열을 : 또는 =으로 바꾸는 방법은 무엇입니까? 대신 다음과 같이 "="

+2

당신은'폭과 같은 뭔가를 찾고있다 (: | =) "\ w {3}' – fardjad

답변

0

this 정규식을 시도해보십시오

width(:|=)"?\w{3} 

이 일치 :

 
width="300px 
width=300px 
width:"300px 
width:300px 
+0

안녕하세요, 감사합니다. 어떻게 이것을 다음과 같이 대체 할 수 있습니까? 그룹화 된 – DavidL

+0

; 이 regex :'(width) (: | =) "? (\ w {3})'를 사용하여 문자열을 일치시킨 다음 '$ 1 $ 2 $ 3'으로 바꿉니다. . – fardjad

0

당신은 |을 사용할 수 있습니다로 모두 교체하고 그룹화하고 = 그에 따라 변경됩니다 :

편집

그래서, 위의 코드를 변경

당신이 그룹에 따옴표/아포스트로피가 포함 된 경우
>>> p = re.compile('width(:|=)"\w{3}') 
>>> print(p.sub('width="555', 'width="500px"')) 
width="555px" 
>>> print(p.sub('width="555', 'width:"500px"')) 
width="555px" 

, 당신은이 작업을 수행 할 수 있습니다

>>> p = re.compile('width(:|=)("|\')\w{3}') 
>>> print(p.sub('width="555', 'width:"500px"')) 
width="555px" 
>>> print(p.sub('width="555', 'width:\'500px"')) 
width="555px" 
>>> print(p.sub('width="555', 'width="500px"')) 
width="555px" 
>>> print(p.sub('width="555', 'width=\'500px"')) 
width="555px" 
01 23,516,

?을 추가하는 것은 선택 이전 요소 만들 것입니다 :이 도움이

>>> p = re.compile('width(:|=)("|\')?\w{3}') 
>>> print(p.sub('width="555', 'width="500px"')) 
width="555px" 
>>> print(p.sub('width="555', 'width=500px')) 
width="555px 

희망을.

+0

감사합니다?. 하지만 일치 된 표현식을 : 또는 =로 바꾸려면 어떻게해야합니까? – DavidL

+1

일치하는 구분 기호 인':'또는'='는 그룹 1에 있으므로 대체 문자열을'\ 1'로 대체 할 수 있습니다. 마크는'\ 2'에 있지만 일치하는 것이있을 때만 표시됩니다. 실제로 그 부분을'([ "\ ']?)'라고 써서 그룹 2 따옴표가 없더라도 항상 존재합니다. – kindall