대체 공백을 사용하여 regex PHP
-
03-07-2019 - |
문제
나는 새로운 정규표현식이 있습니다.가 필요조건을 바꾸기 공간에서 조각의 멀티-라인 텍스트입니다.대체 규칙은 이러한:
- 모두 바꾸기 공간에서 시작-의-라인과하지 않는 공간(
). - 대체 어떤 인스턴스의 반복되는 공간이(하나 이상의 공간)와 같은 수의 금칙-공간이 있습니다.
- 단백하지 않은에서 시작-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)/", " ", $str);
(선택했#160 이후 markdown 분석 nbsp.)
결과:
asdasd asdasd  asdas1
 asda234 4545    54
  34545 345  34534
34 345
답글
@Sprogz:처음에는 제가 생각 동일합니다.하지만 예를 보여줍니다 "\n " => "\n "
사 1 및 2 라인입니다.
다른 팁
PHP를 사용할 수 있습니다 /e
수정 자 실행하다 다음과 같은 대체품의 일부 코드는 다음과 같습니다.
$str = preg_replace('/( {2,}|^ )/em', 'str_repeat(" ", strlen("\1"))', $str);
공백을 포착하기 위해 정규 표현을 변경했습니다. 그만큼 /m
Modifer는이를 멀티 라인 모드로 넣습니다 ^
라인의 시작과 일치합니다.
제휴하지 않습니다 StackOverflow