programing

선택적 공백 정규식

lovejava 2023. 7. 28. 21:42

선택적 공백 정규식

특정 문자 사이의 공백을 무시하는 데 문제가 있습니다.저는 며칠 동안 검색을 하고 있는데 올바른 해결책을 찾을 수 없는 것 같습니다.

내 코드는 다음과 같습니다.

// Get Image data
preg_match('#<a href="(.*?)" title="(.*?)"><img alt="(.*?)" src="(.*?)"[\s*]width="150"[\s*]height="(.*?)"></a>#', $data, $imagematch);
$image = $imagematch[4];

기본적으로 다음과 같은 시나리오가 있습니다.

 <a href="/wiki/File:Sky1.png" title="File:Sky1.png"><img alt="Sky1.png" src="http://media-mcw.cursecdn.com/thumb/5/56/Sky1.png/150px-Sky1.png"width="150" height="84"></a>

(넓이="와 src=" 사이에 공백이 없음을 유의하십시오.)

그리고.

<a href="/wiki/File:TallGrass.gif" title="File:TallGrass.gif"><img alt="TallGrass.gif" src="http://media-mcw.cursecdn.com/3/34/TallGrass.gif" width="150"height="150"></a>

(넓이="와 높이=" 사이에 공백이 없음을 유의하십시오.)

그 글자들 사이의 공백을 무시할 방법이 있습니까?저는 정규식 전문가가 아니기 때문에.

추가 a\s?틈이 날 경우에

\s는 공백을 나타냅니다.

앞의 캐릭터가 한 번 발생하거나 발생하지 않을 수 있다고 말합니다.

둘 이상의 공백이 허용되고 선택 사항인 경우,\s*.

앞의 문자는 0회 이상 발생할 수 있다고 말합니다.

'#<a href\s?="(.*?)" title\s?="(.*?)"><img alt\s?="(.*?)" src\s?="(.*?)"[\s*]width\s?="150"[\s*]height\s?="(.*?)"></a>#'

속성 이름과 = 사이에는 선택적인 공백을 사용할 수 있습니다.

다음에 선택적인 공간을 원하는 경우=또한, a를 추가합니다.\s?그 후에도.

마찬가지로, 선택적 문자가 있는 곳이라면 어디서나?최대 발생이 1인 경우 또는*최대 발생 횟수가 무제한인 경우 선택적 문자를 따릅니다.

그리고 당신의 실제 문제는[\s*]공백이나 *를 포함하는 문자로 표시합니다.[그리고.]문자 클래스입니다.문자 클래스는 구성원 중 하나를 한 번만 발생시킬 수 있습니다(따라서 제거).*그것으로부터) 그리고 만약 당신이 정량자를 추가한다면 (?,+,*등) 다음에]문자 클래스의 모든 문자는 수량자에 따라 발생할 수 있습니다.

언급URL : https://stackoverflow.com/questions/14293024/optional-whitespace-regex