Ваша конкретная проблема заключается в том, что .#
будет соответствовать «любому символу», за которым следует #
символ.
Самым простым решением может быть использование .+
, но это немного грубо для того, что выкажется, делают.На шаг лучше - не жадный .+?
, который будет захватывать только до следующего .
(если он не должен идти дальше), но я бы, вероятно, пошел бы на шаг дальше, чем этот ...
Чтобы предотвратить .
внутри захваченной группы, попробуйте следующее выражение:
"SYSDBA\.([^.]+)\."
, где [^.]
- любой символ, не являющийся .
(нет необходимости экранировать в классах символов), а +
означает «один или несколько».
Если вы хотите разрешить .
в вашей захваченной группе, вы можете использовать:
"SYSDBA\.(\S+)\."
Где \S
- это любое непробельное пространствосимвол (поэтому прекращает сопоставление, если пробелы или символы новой строки).