#include <StringConstants.au3> ; to declare the Constants of StringRegExp
#include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate
Local $sRegex = "(?:implements|new|@var|extends)\s*(?P<fullNamespace>\\[A-Za-z]+|[A-Za-z]+?(?:\\(?P<class>[A-Za-z]+))+)"
Local $sString = "<?php" & @CRLF & _
"declare(strict_types=1);" & @CRLF & _
"" & @CRLF & _
"namespace Jerry\QueryBuilder\Builder;" & @CRLF & _
"" & @CRLF & _
"use Jerry\Interfaces\QueryInterface;" & @CRLF & _
"use Jerry\Interfaces\Statements\FilterInterface;" & @CRLF & _
"use Jerry\QueryBuilder\Statements\Filters\Where;" & @CRLF & _
"" & @CRLF & _
"class Builder implements Jerry\Interfaces\BuilderInterface\BuilderInterface extends Jerry\Base\Stuff" & @CRLF & _
"{" & @CRLF & _
" /** @var Jerry\Interfaces\ConnectorInterface\Foo */" & @CRLF & _
" private $connection;" & @CRLF & _
"" & @CRLF & _
" /** @var \PDOStatement */" & @CRLF & _
" private $statement;" & @CRLF & _
"" & @CRLF & _
" /** @var string */" & @CRLF & _
" private $sql;" & @CRLF & _
"" & @CRLF & _
" /** @var QueryInterface */" & @CRLF & _
" private $query;" & @CRLF & _
"" & @CRLF & _
" /** @var string */" & @CRLF & _
" private $filterSql;" & @CRLF & _
"" & @CRLF & _
" /** @var array */" & @CRLF & _
" private $values;" & @CRLF & _
"" & @CRLF & _
" public function __construct(Jerry\Interfaces\ConnectorInterface $connection)" & @CRLF & _
" {" & @CRLF & _
" $this->connection = $connection;" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" public function getResults(QueryInterface $query): array" & @CRLF & _
" {" & @CRLF & _
" $this->query = $query;" & @CRLF & _
" return [];" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" private function buildSql(): void" & @CRLF & _
" {" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" private function buildFilters(array $filters = [], string $filterSql = ""): void" & @CRLF & _
" {" & @CRLF & _
" if (! count($filters)) {" & @CRLF & _
" $filters = $this->query->getFilters();" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" $iterator = new \ArrayIterator($filters);" & @CRLF & _
"" & @CRLF & _
" while ($iterator->valid()) {" & @CRLF & _
" $filter = $iterator->current();" & @CRLF & _
"" & @CRLF & _
" $iterator->next();" & @CRLF & _
" }" & @CRLF & _
" /** @var FilterInterface $filter */" & @CRLF & _
" foreach ($filters as $key => $filter) {" & @CRLF & _
" unset($filters[$key]);" & @CRLF & _
"" & @CRLF & _
" if ($filter instanceof Where) {" & @CRLF & _
" // WHERE foo = bar" & @CRLF & _
" $filterSql .= "WHERE ? ? ?";" & @CRLF & _
" }" & @CRLF & _
" }" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" public function getConnection(): ConnectorInterface" & @CRLF & _
" {" & @CRLF & _
" $foo = new Jerry\Interfaces\ConnectorInterface();" & @CRLF & _
" return $this->connection;" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" public function setConnection(ConnectorInterface $connection): void" & @CRLF & _
" {" & @CRLF & _
" $this->connection = $connection;" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" public function getSql(): string" & @CRLF & _
" {" & @CRLF & _
" return $this->sql;" & @CRLF & _
" }" & @CRLF & _
"}"
Local $aArray = StringRegExp($sString, $sRegex, $STR_REGEXPARRAYGLOBALFULLMATCH)
Local $aFullArray[0]
For $i = 0 To UBound($aArray) -1
_ArrayConcatenate($aFullArray, $aArray[$i])
Next
$aArray = $aFullArray
; Present the entire match result
_ArrayDisplay($aArray, "Result")
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for AutoIt, please visit: https://www.autoitscript.com/autoit3/docs/functions/StringRegExp.htm