В вашем шаблоне (?s)^(?!log)".+"
отрицательный прогноз не содержит квантификатора, поэтому он будет утверждать, что то, что непосредственно после начала строки, не log
Что вы можете сделать, это использовать квантификатор.*
с чередованием, совпадающим с log
или Exception
и добавлением границ слов \b
, чтобы они не были частью большого слова.
Тогда вы можете использовать отрицательные классы символов [^"]
дляне используйте двойную кавычку и используйте группу захвата ([^"]+)
для значения между двойными кавычками.
^(?!.*\b(?:log|Exception)\b)[^"]*"([^"]+)"
В Java:
String regex = "^(?!.*\\b(?:log|Exception)\\b)[^\"]*\"([^\"]+)\"";
Regex demo
Если вы хотите, чтобы точка соответствовала новой строке, вы можете добавить (?s)
к шаблону.