Я думаю, вы неправильно понимаете, что делает arr.arr[0]
содержит совпадение, а arr[1]
и далее будет содержать совпадения для подвыражений, которые вы сопоставили (заключенные в скобки).regexec
будет соответствовать только один раз, и вам нужно будет повторить его в цикле, продолжая, пока regexec
соответствует 0, например, и начиная следующий матч на единицу дальше, чем rm_so предыдущего матча.Затем вам нужен только один элемент в массиве arr
, так как у вас нет вложенных выражений.
Но, например, если вы хотите сопоставить обе стороны на знаке равенства, вы можете использовать регулярное выражение ([a-z][a-z ]*).*=.*([a-z][a-z ]*)
, а затемпосле совпадения arr[0]
будет структура, которая описывает все совпадение, и arr[1]
, которая описывает тот, что перед знаком =, и arr[2]
, одна после (заключенные в скобки подвыражения).Поэтому, если вы хотите сопоставить строки только в качестве примера, вы можете эффективно использовать подвыражения.