如何提取复杂的包裹编号字符串使用PHP


How To Extract Complex Parcel Numbers & Strings Using PHP

我想知道通过PHP使用Reg Exp提取包裹/AIN号码的最安全和最有效的方法是什么。这些包裹号码来自一个巨大的文本文件,由地址、字符和字符串包围。当我使用php的reg exp,我没有得到任何准确的包裹,我想要的。我不确定如何提取包裹号码,因为它们有各种各样的方式。下面是文本的一个片段,我使用的正则表达式如下:

(包裹通常有各种各样的方式,这里列出的太多了,但这里有一些

  • 130.1 8日至13日,

  • 01 - 00603 - 0000 - 00002 - 0000 - c - 0410,

  • 01 - 0 -真空断路- 0000 - 00002 - 0000 - c - 0410,

  • 01 - 00603 - 0000 - 00002 - 0000 - bfb - 0101,

  • 412001216.39 2-22,

  • 412089214. 1 - 3.12

  • 412001216.41 1 - 12.6,)

当前使用的php代码。

   $pattern = '/[0-9A-Z.'-]{9,30}/';
   $reg_exp = preg_match_all($pattern, 'text below' , $matches,   PREG_PATTERN_ORDER);

12020 200800031620700乔·杰克逊1东大街555号,纽约州12020 200800059632500412001216.41-1-11.2迈克尔乔丹555黄色ave ballston spa, ny 12020 200800007874700412001216.41-1-12.6布兰妮斯皮尔斯信箱139食管,ny 12429-0139 20080005779440042001216.47 -2-17栗色5 686 ballyy ave ballston spa, ny 12020 20080003166290042001216.48 -1-21 lady j gaga smit fornotx罗伯特999 high st gillmore spa, ny 12020 200800065014500[2001216.55-1-8] BILLY RODGER LIL JOSEPH A JR

我想你已经很接近了。上面示例代码中的所有包裹编号前面都有一个15位数字,因此您可以这样做:

$pattern = '/'d{15} ['dA-Z.'-]{9,30}/';

或者如果你想要的是第二部分:

$pattern = '/'d{15} (['dA-Z.'-]{9,30})/';

这个模式避免了像你使用的模式那样意外抓取邮政编码。