Scala затрудняет мне создание регулярного выражения, которое легко работает с "текстовым редактором", который я использовал для тестирования.
Это правила соответствия строк:
Для слова "дек влияет"
- Любой символ между словами в порядке, кроме "."
- Любые числовые значения не допускаются между словами
- Запрещен любой алфавит после последнего слова, кроме "s".
Ниже приведены несколько примеров:
1. « дек влияет на в лесу» => ОК.
2. «Мой Дек влияет на здесь» => ОК.
3. « dek ?ffect # » => ОК.
4. " dek1affect " => НЕ ОК.
5. « Дек. Влияет », => НЕ ОК.
6. « dek, влияющий на » => НЕ ОК.
Я пробовал код, который отлично работает для 1, 3, 5 и 6 из примеров, за исключением 2 и 4.
// For example case 2
"dek affect" matches ".*dek[^\\.]affect[^a-r t-z].*"
// output: false
// For example case 4
"dek1affect" matches ".*dek[^\\.]affect[^a-r t-z].*"
// output: false
Я ожидаю, что на выходе будет "true", но будет показано "false". Отрицание ожидает "s" в конце, но как мне сделать его необязательным?
Другой вопрос - как мне сделать регулярное выражение динамическим, например, если в строке 3 или более слов, любой простой способ сделать регулярное выражение между словами в Scala ?