3

In http://gskinner.com/RegExr/ below regex working but not in PHP

(?>AB/HDR)(?:[^])*?(?=AB/HDR|RUN DATE|\z)

in PHP it is saying:

preg_match() [function.preg-match]: Unknown modifier '(' in E:\xampp\htdocs.....

Not much thinking tried below variations but no result

%(?>AB/HDR)(?:[^])*?(?=AB/HDR|RUN DATE|\z)% 
> result : Compilation failed: missing terminating ] for character class at offset 41

%(?>AB/HDR)(?:\[^])*?(?=AB/HDR|RUN DATE|\z)%
> result : 0 match which is incorrect

Any help would be appreciated !!!

Test data

RUN DATE: 15FEB12                        F E D E R A L    E X P R E S S     C O R P O R A T I O N             PAGE:    1
RUN TIME: 09:36                               INTERNATIONAL DETAIL MANIFEST                             REPORT: FEVIP093-R1
SEQUENCE: DN,ST,BT,BA,MB,BD,DV,RT,AWB         OUTBOUND REQUEST BY ROUTE                                   



AB/HDR : 4876  6218  1850  ORIG: SYD     DEST: DAC     ORIGIN CNTRY: AU   EXPORT CNTRY: AU   SHIP DATE: 14FEB12
    CONSIGNEE ACCT : 000000000   PHONE : +88 02 8834304        SHIPPER ACCT : 141639668   PHONE : 0299978166
       COMPANY: EASY FLY EXPRESS LTD                              COMPANY: INTERNATIONAL AIR PARTS
       NAME:    ADYET                                             NAME:    GREG FULLER
       ADDRESS: HOUSE NO.4, 5TH FLOOR, ROAD NO.20                 ADDRESS: 5A JUBILEE AVENUE
       ADDRESS: UTTARA, SECTOR-3                                  ADDRESS:
       CITY:    DHAKA                                             CITY:    WARRIEWOOD
       ST/PV:      CNTRY: BD   POSTAL: 1230                       ST/PV:      CNTRY: AU   POSTAL: 2102
       BROKER:                    PHONE:                     CITY:                    CNTRY:      CUSTOMS ID NBR:
    SVC: 0101 BILL-T/C: S BILL-D/T: S   TTL PKGS:     1   TTL WGT:       0.5 K   CURR: USD   CUSTOMS VALUE:        90.00
MAWB:                DESC: AIRCRAFT PARTS, 1 X FILTER

AB/HDR : 4926  0503  9651  ORIG: SYM     DEST: DAC     ORIGIN CNTRY: CN   EXPORT CNTRY: CN   SHIP DATE: 14FEB12           ECI
    CONSIGNEE ACCT : 000000000   PHONE : 880-27701506-9        SHIPPER ACCT : 354519100   PHONE : 26501338-8004
       COMPANY: HOP LUN BANGLADESH                                COMPANY: FINELINE(4403137628)
       NAME:    MR. EMRAN                                         NAME:    MISS WU
       ADDRESS: BLDG NO. 3 (4 STORIED BLDG)                       ADDRESS: 3F BLDG D,  HUICHAO INDUSTRIAL PAR
       ADDRESS: DHAKA EXPORT PROCESSING ZONE                      ADDRESS: SECOND GUSHU ROAD XIXIANG TOWN,
       CITY:    GANAKBARI SAVAR DHAK                              CITY:    BAOAN DIST SHENZHEN
       ST/PV:      CNTRY: BD   POSTAL: 1349                       ST/PV:      CNTRY: CN   POSTAL: 518102
       BROKER:                    PHONE:                     CITY:                    CNTRY:      CUSTOMS ID NBR:
    SVC: 0101 BILL-T/C: O BILL-D/T: C   TTL PKGS:     2   TTL WGT:       7.7 K   CURR: USD   CUSTOMS VALUE:       346.50
MAWB:                DESC: PRICE TICKET L(4821100000)NO BRAND

   CRN:  492605039662


RUN DATE: 15FEB12                        F E D E R A L    E X P R E S S     C O R P O R A T I O N             PAGE:   11
RUN TIME: 09:36                               INTERNATIONAL DETAIL MANIFEST                             REPORT: FEVIP093-R1
SEQUENCE: DN,ST,BT,BA,MB,BD,DV,RT,AWB         OUTBOUND REQUEST BY ROUTE  
5
  • What is it supposed to do? Btw, (?:[^]) is not allowed Commented Jun 3, 2012 at 8:26
  • And what data are you running it on? Commented Jun 3, 2012 at 8:26
  • @Jack i need to split it AB/HDR TO AB/HDR OR RUN DATE Commented Jun 3, 2012 at 8:32
  • I'm not 100% sure, but it seems RegExr uses PCRE type regex (for example used by Java), while PHP uses POSIX type regex. This might help you. Commented Jun 3, 2012 at 8:33
  • @Jeroen more like the other way around I reckon ;-) at least the OP mentioned he's using preg_match Commented Jun 3, 2012 at 8:40

1 Answer 1

1

First off, this is not allowed

[^]

I've replaced that with .. Second, you need pattern delimiters:

#(?>AB/HDR)(?:.)*?(?=AB/HDR|RUN DATE|\z)#

Forgot the dot matches all modifier:

#(?>AB/HDR)(?:.)*?(?=AB/HDR|RUN DATE|\Z)#s
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.