Шаблон, который вы пробовали (#|\?)(.*)
, захватывает либо #
, либо ?
, используя группу захвата с чередованием |
, с последующим захватом 0+ раз любого символа в другой группе захвата.
Но в вместо замены указана пустая строка, удаляющая все совпадающие.
Вы можете использовать класс символов ([#?])
в группе захвата для захвата одного из перечисленных.
Чтобы выполнить замену только в том случае, если после совпадения что-то есть, вы можете сопоставить 1+ раз любой символ, кроме новой строки, используя .+
Чтобы удалить то, что следует после сопоставленного символа, вы можете обратиться к захват группы с помощью \\1
, так что вы сохраняете #
или ?
и удаляете то, что сопоставляется впоследствии.
Шаблон может выглядеть следующим образом:
([#?]).+