문제

나는 새로운 정규표현식이 있습니다.가 필요조건을 바꾸기 공간에서 조각의 멀티-라인 텍스트입니다.대체 규칙은 이러한:

  • 모두 바꾸기 공간에서 시작-의-라인과하지 않는 공간( ).
  • 대체 어떤 인스턴스의 반복되는 공간이(하나 이상의 공간)와 같은 수의 금칙-공간이 있습니다.
  • 단백하지 않은에서 시작-of-선 그대로 남아 있습니다.

내가 사용하는 Regex 코치 을 구축하는 패턴 매칭:

/( ){2,}|^( )/

가정하자 나는 이 텍스트 입력:

asdasd asdasd  asdas1
 asda234 4545    54
  34545 345  34534
34 345

를 사용하여 PHP 정규 표현식 교수(아 preg_replace()다),나는이 출력:

asdasd asdasd  asdas1
 asda234 4545    54
  34545 345  34534
34 345

나는 행복하고 간단한 대체 텍스트 정규 표현식을 사용하여,그러나 나는 데 문제가 밖으로 작동 교체하는 방법을 여러-시간 안에 매치하기 위해서 출력을 얻을 나는 욕망이다.

도움이 되었습니까?

해결책

난 그 것을 쉽게 찾을 수 있는 각 공간은 그것을 대체합니다.를 사용하십시오"미리보기"와 보라"뒤에"그룹이 있습니다.

거나,공간을 찾아(\x20 는)하나로 이어질에 의해 또는 그 뒤에 어떤 하나의 공백(\s);하지만,교체하는 공간입니다.

$str = "asdasd asdasd  asdas1\n asda234 4545    54\n  34545 345  34534\n34 345\n";

print preg_replace("/(?<=\s)\x20|\x20(?=\s)/", "&#160;", $str);

(선택했#160 이후 markdown 분석 nbsp.)

결과:

asdasd asdasd&#160;&#160;asdas1
&#160;asda234 4545&#160;&#160;&#160;&#160;54
&#160;&#160;34545 345&#160;&#160;34534
34 345

자세한 정보는 확인 PCREperlre.


답글

@Sprogz:처음에는 제가 생각 동일합니다.하지만 예를 보여줍니다 "\n " => "\n&nbsp;" 사 1 및 2 라인입니다.

다른 팁

PHP를 사용할 수 있습니다 /e 수정 자 실행하다 다음과 같은 대체품의 일부 코드는 다음과 같습니다.

$str = preg_replace('/( {2,}|^ )/em', 'str_repeat("&nbsp;", strlen("\1"))', $str);

공백을 포착하기 위해 정규 표현을 변경했습니다. 그만큼 /m Modifer는이를 멀티 라인 모드로 넣습니다 ^ 라인의 시작과 일치합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top