(Мои программирования вопрос может показаться несколько хитрым, но я не вижу никакого другого решения.)Multiline RegEx в Java
Текст написан в редакторе Eclipse. При активировании самодельного плагина табличного представления для Eclipse качество текста проверяется автоматически с помощью активированного сценария Python (не редактируемого мной), который получает текст редактора. Текст редактора удаляется из символов пробела (\ n, \ t), за исключением нормального пространства (''), потому что в противном случае предложения не могут быть проверены на проверку качества. Когда скрипт завершен, он возвращает неверные предложения в таблицу.
Можно щелкнуть по предложениям в таблице, и плагин будет искать (строка за строку) в активном редакторе для нажатого предложения. Это работает для однострочных предложений. Тем не менее, многострочные предложения не могут быть найдены в активном редакторе, потому что все \ n и \ t отсутствуют в скомпилированном предложении.
Чтобы преодолеть эту проблему, я сменил сценарий так, чтобы весь текст редактора был как одна строка. Я пробовал следующее:
String newSentence = tableSentence.replaceAll(" ", "\\s+")
Pattern p = Pattern.compile(newSentence)
Matcher contentMatcher = p.matcher(editorContent) // editorContent is a string
if (contentMatcher.find()) {
// Get index offset of string and length of string
}
Изменив все пробелы на \ s +, я надеялся, что получится матч. Однако это не сработает, потому что это будет выглядеть так:
- editorContent: \ nright \ n \ ttasks.
- tableSentence: Правильные задачи.
- NewSentence: Thes + права + задачи. // После действия «replaceAll»
- Должно быть: Задачи \ s + right \ s +.
Итак, мой вопрос: как я могу настроить вход для компилятора? Я неопытен, когда дело доходит до Java, поэтому я не вижу, как это изменить .. И я, к сожалению, не могу изменить сценарий Python, чтобы также вернуть полные предложения ...
вы должны '«\\\\ s +»', так как '' \ '' также экранирующий символ в строке замены. Вы можете использовать 'Matcher.quoteReplacement (" \\ s + ")', чтобы избежать двойного escape-кода при замене литерала, содержащего '' \ ''. – nhahtdh
На самом деле, в этом случае просто используйте функцию 'replace', так как он ожидает строку, а не регулярное выражение. – nhahtdh