Итак, я работаю над проблемой, которую я бы лучше решил с помощью регулярных выражений, я тестирую большинство своих выражений регулярных выражений в Notepad ++. Это работало нормально после нескольких настроек, таких как двойное экранирование некоторых вещей для Java, однако это Выражение regex выдает исключение при запуске в Java, однако оно отлично работает в Notepad ++, идея в том, чтобы этот код мог упоминать другого игрока в игре с выделенным именем.
tldr; Я пытаюсь заменить первое вхождение определенного имени в сообщении
Я некоторое время пытался осмотреться, но не нашел решения, поэтому подумал, что можно спросить здесь.
p.getName () просто возвращает строку (имя игрока)
String newmessage = message.replaceFirst("(?i)" + Pattern.quote(p.getName()) + "((?(?=\\s)|('|,|!))|$)", color + p.getName() + Color.toString(Color.getLastColorOf(message)));
Однако выполнение кода выдает это исключение
...at java.lang.Thread.run(Unknown Source) [?:1.8.0_202]
Caused by: java.util.regex.PatternSyntaxException: Unknown inline modifier near index 15
(?i)\QTauCubed\E((?(?=\s)|('|,))|$)
^
at java.util.regex.Pattern.error(Unknown Source) ~[?:1.8.0_202]...
И я не уверен, что он хочет, чтобы я делал, я не понимаю, как это недопустимо регулярное выражение
Это регулярное выражение для Notepad ++
(?i)Name((?(?=\s)|('|,|!))|$)
Выше будет соответствовать
Name's r
Name
Name test
Name,
Name!
но не будет совпадать
Nametest
Именно это я и собирался сделать.