2011-01-19 3 views
3

소문자 글자 n을 개행 문자로 바꿀 수있는 정규 표현식이 필요합니다. 단, 숫자 뒤에 또는 대문자가 올 때만 필요합니다. 예를 들어글자와 숫자 또는 대문자가 일치하도록 정규 표현식이 필요합니다.

문자열 : 결과 식을 호환 할 필요가 그래서 나는, PHP에서이 데이터를 소독하기 위해 노력하고있어
Company Building
100 Prospect Way

:에
Company Buildingn100 Prospect Way

변환해야한다.

답변

4

이 시도 : PHP에서

n(?=[\dA-Z]) 

(working example) :

$str = preg_replace("/n(?=[\dA-Z])/", "\n", $str); 

(?=...)는 긍정적 예측이다 - 우리가 일치 n 후 무엇을 확인하지만 일치하지 않기 때문에, 다음 문자는 대체되지 않습니다.

3
$result = preg_replace("/n(?=[\dA-Z])/", "\n", $subject); 

대문자는 ASCII 문자를 의미합니다.

$result = preg_replace("/n(?=[\d\p{Lu}])/u", "\n", $subject); 

유니 코드를 사용하는 경우.

+0

'\ n'을 큰 따옴표로 묶으시겠습니까? – BoltClock

+0

@BoltClock : RegexBuddy가이 코드 스 니펫을 생성했습니다 (PHP는 알지 못합니다). 작은 따옴표에 무엇이 잘못되었는지 자세히 설명해 주시겠습니까? –

+5

PHP는 작은 따옴표로 된 이스케이프 문자를 인식하지 못합니다. 이중 따옴표 만 사용하십시오 : http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.single. 샘플 코드 : http://ideone.com/8Pfhy ('\\ n'을 출력하고''\ n "'과 같이 새 줄을 출력하지 않음). 그건 그렇고, 나는 PHP regexes를위한이 유용한 사이트를 발견했다 : http://www.pagecolumn.com/tool/pregtest.htm (나는 어떤 PHP도 모른다. 그러나 당신은 시간과 함께 물건을 잡는다 :)') – Kobi

관련 문제