2011-04-30 3 views
0

모든 숫자를 찾을 수 있지만 예를 들어 인용 줄 바꿈없이 찾을 regExp가 필요합니다. 찾을 : 일부 텍스트 1234 일부 텍스트 그러나 일부 텍스트 "일부 텍스트 1234 일부 텍스트", 및 문자열 이에 전달해야처럼 : "1234"또는 "123"등PHP regexp 따옴표없이 숫자를 찾으시겠습니까?

내가 한 불완전 desision 있습니다

preg_match_all('/\b\d+\b/', $str, $matches); 

내가 t 운동 ve also tried something like this [^\"|\']+ but it didn을.

답변

0

당신이 사용할 수있는 PHP의 주장 :

http://php.net/manual/en/regexp.reference.assertions.php

preg_match_all("/\d+(?!')/s", $str, $matches); 
+0

Thx, 적어도 U는 나에게 길을 알려주었습니다. 2-3 년 전에 그 문제를 풀 었음을 기억하지만 지금은 기억을 새롭게합니다 - 행운을 빈다. –

1

단순한 RE로 수행 할 수 있다면 잘 모르지만 두 단계로 수행 할 수 있습니다.

1) (괜찮을한다)

$filtered = preg_replace('/"[^"]+"/', '', $str) 

이 같은 모든 인용 문자열을 필터링 텍스트 거대한하거나 복잡하지 않으면 결과

preg_match_all('/\b\d+\b/', $filtered, $matches); 

에 정규 표현식을 적용 메모리에 따라 달라집니다 크기)

+0

따옴표를 공백으로 대체 할 필요가 없습니다. 문제를 해결하는 regExp가 하나 필요합니다. –

+0

무엇을 원하십니까? 이 코드는 따옴표 안에 들어 있지 않으면 안되며, 따옴표 안에 들어있는 숫자 만 있으면된다.이 방법은 쉽고 정확하게 다음과 같이 작동한다.'$ str = 'some "text 1234"lorem 542 2342 "ispum 6"43';'returns' 542, 2342, 43' – Zap

+0

당신은 밀접하게 읽을 수 있기 때문에 텍스트가 따옴표로 변경 될 수 없으며 eather 숫자는 따옴표로 묶이지 않습니다. 분명하니? 다른 말로하면, 숫자를 찾지 만 따옴표 안에 있지 않고 그 자리에 숫자와 다른 물건을 변경하지 않고 따옴표를 남겨 둡니다. –