Как найти австралийские почтовые индексы с помощью регулярного выражения

Я работаю над проектом RoR, где я хочу найти действительный австралийский почтовый индекс из строки. Моя строка выглядит следующим образом: -

"[\"\", \"\\\"ParsedText\\\":TVR \", \"PURCHASE \", \"TOTAL \", \"APPROVED \", \"05/02/18 20.51 \", \"TOTAL \", \"EFT \", \"CHANGE \", \"Taxable Iteus \", \"TOTAL includes GST \", \"OTHER SAVINGS \", \"Woolworths \", \"fresh people \", \"VICTORIA PARK PH: (08) 6318 9975 \", \"Your Store Manager is: Mark \", \"Your Assistant Store Manager is: Nick \", \"Your Customer Service Manager is: Taylar \", \"Let us know how can make your shopping trip better \", \"WOOLWORTHS INVOICE - ABN 88 OOO 014 675 \", \"$34.44 \", \"CARO:.............0553 T \", \"$0.00 \", \"$0.75 \", \"22.65 \", \"*SMITHS CRINKLE PERI PERI 150G \", \"SUNRICE BASMATI IKG \", \"NESTLE MILO POUCH 150G \", \"INGHAM BREAST 400G \", \"*BULLA CREAMY CLASSICVANILLA 21 \", \"DON HAM LEG SHAVED ENGLISH BAKEO 250G \", \"GOLDBELGlANCHOCOLATELAVACAKE2PK180G \", \"CHOBANI GREEK YOG BLUEBRY NON FAT 170G \", \"Qty \", \"$2.25 ea \", \"3 \", \"CHOBANI GREEK YOG MANGO FAI I?OG \", \"Qty \", \"$2.25 ea \", \"3 \", \"CHOBANI GREEK YOG BLACK CHERRY 170G \", \"Qty \", \"2 \", \"$2.25 ed \", \"CHOBANI GREEK YOG STRAWB BANANA 170G \", \"Oty \", \"2 \", \"$2.25 ea \", \"CHOBANI GREEK OFFER \", \"17 SUBTOTAL \", \"WOOLWORTHS \", \"VICTORIA PARK \", \"4333 \", \"MERCH ID: 611000606004333 \", \"TERM ID. \", \"\\\"4333088 \", \"Bankwest Credit CREDIT \", \"AIO \", \"A0000000041010 \", \"ARQC \", \"7EB518169AOB56E? \", \"0000000000 \", \"$34.44 \", \"$34.44 \", \"00 \", \"002366 \", \"3.29 \", \"4.20 \", \"2.00 \", \"4. Iff \", \"5.00 \", \"2, BOA \", \"3.00 \", \"6.75 \", \"6.75 \", \"4.50 \", \"4.50 \", \"-12.50 \", \"$34.44 \", \"$34.44 \", \"Thank'S for pi Cking \", \"Total Savings $ 22.65 \", \",\\\"ErrorMessage\\\":\\\"\\\",\", \"\\\"ErrorDetails\\\":\\\"\\\"\", \"},\", \"],\", \"\\\"OCRExitCode\\\":\\\"1\\\",\", \"\\\"IsErroredOnProcessing\\\":\\\"false\\\",\", \"\\\"ErrorMessage\\\":\\\"null\\\",\", \"\\\"ErrorDetails\\\":\\\"null\\\",\", \"\\\"ProcessingTimeInMilliseconds\\\":\\\"1.735\\\",\", \"\\\"SearchablePDFURL\\\":\\\"Searchable PDF not generated as it was not requested.\\\"\", \"}\"]"

Я пробовал два следующих шаблона: -

mystring[/(0[289][0-9]{2})|(0[89][0-9]{2})|([1-2]{1}[0-9]{1}[0-9]{2})|(2[9][0-1]{1}[1-4]{1})|([3-7]{1}[0-5]{1}[0-9]{2})|([7-9]{1}[8-9]{1}[0-9]{2})/]

А также:

mystring[/\d{4}/]

Но оба шаблона возвращают недопустимые почтовые индексы. Поскольку моя строка содержит номер телефона (08) 6318 9975, она возвращает первые четыре числа 6318, что является недопустимым почтовым индексом. Правильный почтовый индекс в моей строке - 4333. Пожалуйста, помогите мне найти действительный почтовый индекс. Заранее спасибо!

Всегда ли текст почтового индекса будет иметь такое форматирование? \"4333 \"

sniperd 17.04.2018 19:23

да формат такой же

awsm sid 17.04.2018 19:32

Вам нужен самый первый действительный почтовый индекс или все почтовые индексы?

Robo Mop 17.04.2018 19:34

Будет только один действительный почтовый индекс, остальные будут любыми цифрами. я хочу действующий почтовый индекс

awsm sid 17.04.2018 19:35

Австралийский почтовый индекс всегда представляет собой четырехзначное число, но моя строка может содержать некоторые другие четырехзначные числа.

awsm sid 17.04.2018 19:36

Вы пробовали mystring[/\\"\d{4}\\"/], который выглядит так, как будто он должен захватывать именно это поле, когда 4 числа находятся сами по себе.

sniperd 17.04.2018 19:40

Возвращает ноль.

awsm sid 17.04.2018 19:45

Думаю можно использовать mystring[/VICTORIA PARK\s*",\s*"(\d+)/, 1]

Wiktor Stribiżew 17.04.2018 20:01

Я не могу использовать "ПАРК ВИКТОРИИ", так как это не исправлено.

awsm sid 17.04.2018 20:02

Тогда какое правило? Как вы можете определить контекст, правила для извлечения?

Wiktor Stribiżew 17.04.2018 20:03

Там может быть любой текст, любой четырехзначный номер, но мне нужно найти только действительные австралийские почтовые индексы.

awsm sid 17.04.2018 20:04

Тогда это невозможно, поскольку любые 4-значные числа, соответствующие AUS ZIP, будут соответствовать вашим требованиям.

Wiktor Stribiżew 17.04.2018 20:09

Спасибо за помощь, попробую другой подход ... есть ли драгоценный камень, который может предоставить список австралийских почтовых индексов?

awsm sid 17.04.2018 20:11
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
13
112
1

Ответы 1

Проверь это

(?<!\d |\d)\d{4}(?= ?\\)

пример объяснение в правом верхнем углу страницы

или это

(?<=\")\d{4}(?= ?\\)

пример объяснение в правом верхнем углу страницы

Примечание: для реализации в ruby ​​избегайте специальных символов (я не знаю, что Ruby может быть истинным, может быть ложным)

mystring[/(?<!\d |\d)\d{4}(?= ?\\)/]

mystring[/(?<=\")\d{4}(?= ?\\)/]

Возвращает ноль.

awsm sid 17.04.2018 19:55

Не могли бы вы сначала вызвать JSON.parse на этой строке, чтобы уменьшить все лишние отметки \\\"?

Phlip 17.04.2018 19:58

он также возвращает 6318 с номера телефона (08) 6318 9975

awsm sid 17.04.2018 19:59

похоже, что у Ruby есть некоторые ограничения на просмотр назад :(

AndresDLRG 17.04.2018 20:06

Другие вопросы по теме