Я недавно запросил и получил справку относительно регулярного выражения Java, которое будет соответствовать строке, содержащей максимум две звездочки, которые могут быть первым или последним символом или обоими. Это был ответ, который я принял:
^\\*?[^*]+\\*?$
Естественно, требования теперь изменились, и мне нужно дополнительно ограничить строку так, чтобы она могла содержать только строчные или прописные буквы, пробелы или подстановочный знак звездочки. Никакие цифры или знаки препинания (кроме *
) не допускаются. Ограничения на расположение подстановочных знаков остаются такими же, как описано выше.
Таким образом, эти строки будут сопоставлены:
foo
f oo
*Foo
FOO *
*foo*
*F o o*
И эти строки не будут:
*
**
**foo
*f*oo
1
*1
_
foo1*
_foo
%foo^
Я потратил целую вечность, пытаясь решить эту проблему, и не смог, даже используя RegexBuddy . Мне не очень нравится задавать такой конкретный вопрос о переполнении стека, но я просто не могу найти решение самостоятельно.
Заранее спасибо.