I am writing a regular expression for parsing PHP annotations in a flexible way. I'd like to accomplish all the goals listed above with one single expression. So I would appreciate any suggestions about the quality of it (in terms of corner cases, performance, best practices and correctness). **PCRE expression:** /[\*\s]*@(?P<name>\w+[\\\w]*?)(?:\s|\() (?P<value> (?:[\/\w\s\"\<\>\_\#\=\-\.\'\{\}:;,\*\(\)\[\]]*[^\R\*\s\/\)]) )? (?:\s | $|\))/gsxmu **Goals of the regular expression:** - List all annotations with their values - Values can be multi-lined and have markup (html, json or markdown) - The initial space + * of each line should be removed from the value - Many annotations can be in the same line - Annotation names can be namespaced **Sample PHPDoc string:** > /** > * Description > * > * @Tag name name @annotation beee @aaf dsfsd fgdg > * @Tag name name {"json":"dfsf"} > * @Tag asdasd <html> #markdown ==markdown== __markdown__ > * - markdown > * > mark 1 > .mark > "string" > 'string' > * @Annotation() > * @Tag name name @annotation beee @aaf dsfsd fgdg <markdown> #markdown ==markdown== > * @a() @b("name") @c() > * @Annotation\Name("var1()", "var2") @n("name()_name") > * @Annotation(["var1", "var2"], "var3") > * @Annotation\Filter\Name(["var1", "var2"], "var3", {"var4": "var5"}) > * @Annotation( > * ["GET", "POST"] > ) @Name({"name": "Tomas"}) > * @Tag name name > */ Expected result: > <?php > > array( > [ > 'name' => 'Tag', > 'value' => 'name name' > ], > [ > 'name' => 'annotation', > 'value' => 'bee' > ], > [ > 'name' => 'aaf', > 'value' => 'dsfsd fgdg' > ] > // ... and so on... (see live example) > ); A live demo can be found [here](https://regex101.com/r/zU1eQ5/7).