Вы возвращаете ссылку на ret , которая является переменной в стеке.
Попробуйте этот паттерн \d+\s+[\w ]+[\s,]+[\w ]+[\s,]+\w+ \d+
Объяснение:
\d+\s+
- сопоставить одну или несколько цифр, затем сопоставить одно или более пробелов
[\w ]+[\s,]+
- сопоставить один или несколько символов слова или пробел, затем один или несколько пробелов или запятая
\w+ \d+
- сопоставить одно или несколько символов слова, пробел и одну или несколько цифр
Вы можете упростить свой шаблон до чего-то подобного для сопоставления адреса, будь то в одну строку или в несколько строк.
\b\d+(?:\s+[\w,]+)+?\s+[a-zA-Z]{2}\s+\d{5}\b
Regex Объяснение:
\b\d+
- Начинается поиск по границе слова с одной или несколькими цифрами (?:\s+[\w,]+)+?
- Не - шаблон группировки, который соответствует одному или нескольким пробелам, а затем тексту, содержащему один или несколько символов слова и запятую, и все это один или несколько раз, но не жадным образом. \s+[a-zA-Z]{2}
- Соответствует одному или нескольким пробелам, а затем двум буквенным символам, чтобы ожидать текст, подобный CA
, NY
\s+\d{5}\b
- За ним следует один или несколько пробелов, а затем пять цифр с границей слова чтобы избежать частичного совпадения в большом тексте Добавить ?
к проверке [ ,]
:
(\d+)[ \n]+((\w+[ ,]?)+[\$\n, ]+){2}([a-zA-Z]){2}[$\n, ]+(\d){5}