2014-05-12 5 views
-4

정확히 표시된 문자열과 구분 기호 사이의 내용을 일치시키려는 문자열이 있습니다.# 구분 기호 사이의 정규식 일치

# a 
This is what should be matched/returned 
# \a 
# a

# \a은 구분 기호입니다.

$str = <<<EOD 

# a 
this is what should be returned 
# \a 

EOD; 

preg_match("/#\sa\n(.*)\n#\s\\a/m", $str, $matches); 

/* 
Array 
(
) 
*/ 
print_r($matches); 

내가 무슨 일을하고있는 중이 야 : 일치하지 않는 것/정규식

PHP? 그것을 할 수

+2

'{1} '은 무엇인가요? 당신은 그들을 삭제할 수 있습니다, 정규식은 그들없이 동일합니다. – AD7six

+0

아마도 작은 따옴표를 사용하거나 백 슬래시를 두 번 이스케이프 처리해야합니다. 또한 문자 자체가 하나이기 때문에'{1}'은 필요하지 않습니다. –

+0

멀티 라인 수정 자 추가를 시도 했습니까? 1 {\} {1} \\ {1}/m "' – scragar

답변

3

여러 가지 방법

  1. s. 아마 \r\n 대신 내가 사용하는 단지 \n가있는 \
  2. 을 피해 줄 바꿈을
  3. \\\\ 일치 할 수정 \s

preg_match("/#\sa\s(.*)\s#\s\\\\a/s", $str, $matches); 

왜 전세계에 {1}을 사용합니까?

+0

고마워, 그거야. 그래서 그것은'\ n'과 백 슬래시를 이스케이프하는 이중 문자입니다. 좋은 정규식에서 : –

+0

그리고's' 수정 자. '.' char는 그것 없이는 개행 문자와 일치하지 않습니다. 따라서 두 번째'\ s'가 필요하지 않을 수도 있습니다. 또는's'를 없애고'\ s +'를 사용할 수 있지만'. *'에'?'를 추가하십시오. 몇 가지 방법들. – AbraCadaver

+0

고마워, 가지고있어, 아프다. 건배 –

관련 문제