Як атрымаць маё рэгулярны выраз для здабывання інфармацыі, а не проста праверыць

У мяне ёсць рэгулярны выраз для праверкі радок ці з'яўляецца паштовы/паштовы індэкс ці не. Але я сапраўды хацеў бы таксама, каб мець магчымасць атрымаць, што з поўнага адрасу (ці, калі гэта магчыма, любы радок).

Вось маё бягучае рэгулярны выраз:

/^((\d{5}-\d{4})|(\d{5})|([a-zA-Z]\d[a-zA-Z]\s\d[a-zA-Z]\d)|([a-zA-Z]\d[a-zA-Z]\d[a-zA-Z]\d))$/

У выпадку неабходнасці я гатовы пагадзіцца на функцыю (я правяраю з PHP), але я палічыў за лепшае б рэгулярны выраз зрабіць працу, калі гэта магчыма.

1

3 адказы

РНР будзе атрымаць групоўкі ў () у масіў з preg_match() :

$matches = array();
$pattern = "/^((\d{5}-\d{4})|(\d{5})|([a-zA-Z]\d[a-zA-Z]\s\d[a-zA-Z]\d)|([a-zA-Z]\d[a-zA-Z]\d[a-zA-Z]\d))$/";
preg_match($pattern, $your_source, $matches);
print_r($matches);
2
дададзена
Так, я ведаў, што. Але, гэта не дапаможа мне выняць, што рэгулярны выраз з большай радка; толькі зменныя ў рэгулярным выразе
дададзена аўтар Martin, крыніца

preg_match, which I assume you're already using when you're checking a string against your regular expression, also gives you back the actual text that matched your pattern.

preg_match($regex, $input, $matches);
echo $matches[0];

Трэці аргумент запаўняецца вынікамі спрабуе адпавядаць рэгулярнаму выразу супраць вашага ўваходу. <�Код> $ адпавядае [0] будзе утрымліваць тэкст, які адпавядаў ўвесь малюнак, тады як больш высокія індэксы будуць утрымліваць тэкст, які супастаўляецца з незахватывающими (часткі ўзору ў дужках).

Тым не менш, у вашым выпадку, вы прыкладаецца свой шаблон з пачаткам уваходнага тэксту ^ і канец уваходнага тэксту $ сімвалы, што азначае, што любыя матчы павінны ўключаць клавішы усе радок уводу (або цэлая радок у шматрадковых рэжыме). Вы павінны былі б пазбавіцца ад ^ і $ , перш чым спрабаваць выкарыстоўваць гэты шаблон для здабывання паштовы індэкс з большай радка.

2
дададзена
Выдатна! Ты маеш рацыю, я выкарыстоўваю preg_match() і згрупаваць зменныя ў масіў, дзякуючы трэцяму параметры. Але інфармацыя аб ^ і $ гэта тое, што мне было трэба
дададзена аўтар Martin, крыніца

Паколькі вы працуеце з поўным адрасам, то чаму б не спадзявацца на паслугі, якія могуць дакладна атрымаць і праверыць адрас і разабраць яго кампаненты (уключаючы поўны паштовы індэкс), што забяспечвае добры адказ? Было б, вядома, зьнішчыць любое угадвання. На скрыншоце ніжэй паказаны інструмент па SmartyStreets, які можна атрымаць адрасы з усіх відаў тэксту. У інтарэсах поўнага раскрыцця інфармацыі, я з'яўляюся распрацоўшчыкам праграмнага забеспячэння на SmartyStreets .

https://smartystreets.com/account/extract

LiveAddress extraction

0
дададзена