2009-11-03 4 views
0

내가 일치 이가지 경우가 작동하지 : 어느정규 표현식 : | OR() 서브 패턴에이

# ... ([0-9]+,[0-9]+) € ... # 

또는 지금

# ... (--) ... # 

# ... (?:(--)|([0-9]+,[0-9]+) €) ... # 

가 작동하지 않습니다 ,라고 말합니다

Unknown modifier '(' ... 

PHP 5.3에서 preg_match_all()을 사용하고 있습니다.

위의 표현은 완전한 표현이 아니라 추출입니다!

+0

당신이 방법을 '게시 할 수 문제를 identigy 할 수 PHP 코드를 게시하시기 바랍니다 PHP 컨텍스트에서 패턴을 정의 했습니까? –

+1

이것들을 추출한 것이라면 오류없이 작업을 게시 한 정규식 전체를 제공하십시오. – Tomas

+1

정규 표현식에서 파이프 문자의 사용을 "OR"보다는 "alternation"이라고합니다. –

답변

0

귀하의 정규 표현식의

preg_match_all('#(?:(--)|([0-9]+,[0-9]+) €)#', ...) 

오류없이 작동합니다

$p = "/(?:(--)|([0-9]+,[0-9]+) €)/"; 
echo preg_match($p, "--")."\n";    // outputs 1 
echo preg_match($p, "nomatch")."\n";   // outputs 0 

그래서 우리는

+0

코드가 너무 복잡하여 루프에서 완전한 표현식을 구축하기 때문에 너무 복잡합니다. 하지만 버그를 발견했습니다. | 구분 기호로, 내가 완전히 fogot. – janoliver

0
당신은 구분 기호로 /으로 예를 들어, regular expression in PCRE format을 얻을 구분 기호에 일반 정규 표현식을 둘 필요가

:

/(?:(--)|([0-9]+,[0-9]+) €)/ 
0

당신이 구분 기호를 넣어 적이 있습니까? 대신

preg_match_all('(?:(--)|([0-9]+,[0-9]+) €)', ...) 
+0

물론 구분 기호를 사용하고 있습니다 ... 정규 표현식의 추출물을 게시했습니다 ... – janoliver