Поскольку массив, возвращаемый match()
, будет содержать все совпадения в первом слоте массива и группы захвата в последующих элементах.
Содержимое массива будет:
[
[0] = "a='00-8'",
[1] = '00-8'
]
Что вы хотите phone1[1]
вместо phone1[0]
, который содержит только часть матча, указанной вашей группой захвата (.*)
.
на основе обновленного вопроса, шаблон регулярного выражения должен быть изменен на:
"a='(.*?)'"
По умолчанию, регулярные выражения пытаются соответствовать как можно больше (известный как «жадный»). Картина говорит «матч любое количество любых символов между '
символов. Это теперь включает 00-8'b='13-'a+='00-2'b+='3333'c='4
. Добавляя ?
, это изменяет поведение„ленивым“. Другими словами, матч, как мало насколько это возможно, и ваше регулярное выражение возвращается к сопоставлению только 00-8
, как и раньше.
Потому что вы пытаетесь соответствовать включает в себя = ... – Pieter21
проверить мои несколько более полное ответ ниже – Pieter21