You can use a branch reset: (?|...|...)
(require|include)(_once)?(?|\(([^)]+)\)| ([^\s;]+))
The main interest of the branch reset feature is that the capture groups inside have the same number.
According to George Reith comment, you must find the good character class for the non-parenthesis case. Here I have choosen [^\s;]
to stop if a white-space or a semi-colon is encountered.
An other way: (I don't care if there are parenthesis or not)
(require|include)(_once)?[( ]([^\s;)]+)
An other way: (If Then else)
(require|include)(_once)?(\()?(?(3)| )([^\s;)]+)
(For this last way, note that the file name is in group 4)