2012-09-15 3 views
0

검출되지 I는 PCRE 패턴을 갖는다.
N.J.Baker Phillipsburg, NJ, USA로부터 구입 한 HPLC 급 메탄올 및 아세토 니트릴).
[호]
-3- Aminofluoranthene는 알드리치 (위스콘신 주 밀워키, USA)에서 구입 시험 [/ 호]을 향하고.
1- 아미노 피렌
1- 팔미 토일 글리세로 -3- 포스 포 콜린
카페인
시토신
포름산 (LC/MS 등급)
테오필린
HPLC 등급 루신 엔케팔린을 플루 카로부터 구입
날리 딕스 산 (밀워키, WI, USA)

아미 트립 틸린 하이드로 클로라이드 β -Asp-레우

이소류신 γ -Glu-레우
히 푸르 산

류신 1- 올레 오일 글리세로 -3- 포스 포

페닐알라닌 -1- 스테아 글리세로 포스 포 콜린
트립토판 시그마에서 구입 티로신 (세인트 Louis, MO, USA).
: (. *) '끝에' PCRE, 정규식 서브 패턴

내가 실행

preg_match_all($pattern,$text,$matches,PREG_OFFSET_CAPTURE) 

그것은 마지막 서브 패턴을 캡처하지 않습니다 ', 그리고 왜 이해가 안 돼요. 설명이 있습니까?

(즉, Millipore Milli-Q 시스템 (Billerica, MA, USA)에서 증류수를 얻습니다. HPLC 등급 메탄올 및 아세토 니트릴은 J. T. Baker Phillipsburg, NJ, USA에서 구입). [호] 시험 호 [/ 호]

아닌 문자열의 마지막 부분 :

' 3 Aminofluoranthene는 알드리치 (위스콘신 주 밀워키, USA)에서 구입했다. 1- 아미노 피렌 1- 팔미 토일 글리세로 -3- 포스 포 콜린 카페인 시토신 포름산 (LC/MS 등급) 리딕 산 테오필린 플루 카 (밀워키, WI, USA) 아미 트립 틸린에서 구입 HPLC 등급 루신 엔케팔린 염산염 β-: ASP 레우 이소류신 -γ의 Glu-레우 히 푸르 산 류신 1- 올레 오일 글리세로 -3- 포스 포 페닐알라닌 -1- 스테아 글리세로 포스 포 콜린 트립토판 시그마에서 구입 티로신 (세인트 루이, 미주리 주, 미국).'내가 원하는

)

+0

무엇 정확히 $ 텍스트 문자열에서 가져 wan't합니까? –

+0

"text1 [heading] text2 [/ heading] text3 [heading] text4 [/ heading] text5"형식의 텍스트를 가질 수 있습니다. 표제 태그의 발생 횟수는 0 이상일 수 있습니다. 그리고 태그 안팎에서 텍스트 부분을 잡아 내고 싶습니다. (더 일반적으로 패턴은 주어진리스트의 이름이 될 수있는 태그의 이름을 캡처 할 수 있어야하지만 패턴을 단순화하여 캡쳐 된 유일한 태그 이름이 질문을 줄이려고합니다. 그 부분이 문제와 관련 있다고 생각하지 마십시오.) – numfar

답변

1

나는 탐욕 반전 플래그를 제거 할 때 그것은 나를 위해 잘 작동합니다. (. *)

$pattern = '/(.*)(\[(heading)\](.*)\[\/\3\])(.*)/s';

Array 
(
    [0] => Array 
     (
      [0] => Array 
       (
        [0] => Distilled water from a Millipore Milli-Q system (Billerica, MA, USA). 
HPLC-grade methanol and acetonitrile purchased from J. T. Baker Phillipsburg, NJ, USA). 
[heading]HEading test[/heading] 
3-Aminofluoranthene purchased from Aldrich (Milwaukee, WI, USA). 
1-Aminopyrene 
1-palmitoyl-glycero-3-phosphocholine 
caffeine 
cytosine 
formic acid (LC/MS grade) 
nalidixic acid 
theophylline 
HPLC-grade leucine enkephalin purchased from Fluka (Milwaukee, WI, USA) 
Amitriptyline hydrochloride 
β-Asp-Leu 
isoleucine 
γ-Glu-Leu 
hippuric acid 
leucine 
1-oleoyl-glycero-3-phosphocholine 
phenylalanine 
1-stearoyl-glycero-phosphocholine 
tryptophan and tyrosine purchased from Sigma (St. Louis, MO, USA). 

        [1] => 0 
       ) 

     ) 

    [1] => Array 
     (
      [0] => Array 
       (
        [0] => Distilled water from a Millipore Milli-Q system (Billerica, MA, USA). 
HPLC-grade methanol and acetonitrile purchased from J. T. Baker Phillipsburg, NJ, USA). 

        [1] => 0 
       ) 

     ) 

    [2] => Array 
     (
      [0] => Array 
       (
        [0] => [heading]HEading test[/heading] 
        [1] => 160 
       ) 

     ) 

    [3] => Array 
     (
      [0] => Array 
       (
        [0] => heading 
        [1] => 161 
       ) 

     ) 

    [4] => Array 
     (
      [0] => Array 
       (
        [0] => HEading test 
        [1] => 169 
       ) 

     ) 

    [5] => Array 
     (
      [0] => Array 
       (
        [0] => 
3-Aminofluoranthene purchased from Aldrich (Milwaukee, WI, USA). 
1-Aminopyrene 
1-palmitoyl-glycero-3-phosphocholine 
caffeine 
cytosine 
formic acid (LC/MS grade) 
nalidixic acid 
theophylline 
HPLC-grade leucine enkephalin purchased from Fluka (Milwaukee, WI, USA) 
Amitriptyline hydrochloride 
β-Asp-Leu 
isoleucine 
γ-Glu-Leu 
hippuric acid 
leucine 
1-oleoyl-glycero-3-phosphocholine 
phenylalanine 
1-stearoyl-glycero-phosphocholine 
tryptophan and tyrosine purchased from Sigma (St. Louis, MO, USA). 

        [1] => 191 
       ) 

     ) 

) 
+0

동의합니다. 나는 Regex 친구를 통해 그것을 실행하고 그것은 작동합니다. 그룹 5는 "개행"문자로 시작하므로 조심하십시오. – awm

+0

's' 플래그는 개행과 일치하는 도트를 포함하므로, 결과를 trim()하는 것에 대해 생각하고있는 것 같습니다. 좋은 캐치. – discomatt

+0

하지만 나는 탐욕의 반전이 필요합니다. 나는 때때로 "bla [heading] blah [heading] bladi [heading] bla [/ heading] blah"와 같은 텍스트를 가질 수도 있습니다. 그리고 나서 태그가 붙은 각 텍스트와 제목 태그 외부의 텍스트를 잡아야합니다. – numfar

-1

과 마지막을 교체하십시오 (|. \ n을) *

+0

그것은 정규 표현식의 다른 부분을 망쳐 놨고, 's'플래그는 이미 그것을합니다. – awm