Требуется дополнительная помощь с регулярным выражением Java - PullRequest
1 голос
/ 16 июля 2011

Я недавно запросил и получил справку относительно регулярного выражения Java, которое будет соответствовать строке, содержащей максимум две звездочки, которые могут быть первым или последним символом или обоими. Это был ответ, который я принял:

^\\*?[^*]+\\*?$

Естественно, требования теперь изменились, и мне нужно дополнительно ограничить строку так, чтобы она могла содержать только строчные или прописные буквы, пробелы или подстановочный знак звездочки. Никакие цифры или знаки препинания (кроме *) не допускаются. Ограничения на расположение подстановочных знаков остаются такими же, как описано выше.

Таким образом, эти строки будут сопоставлены:

foo
f oo
*Foo
FOO *
*foo*
*F o o*

И эти строки не будут:

*
**
**foo
*f*oo
1
*1
_
foo1*
_foo
%foo^

Я потратил целую вечность, пытаясь решить эту проблему, и не смог, даже используя RegexBuddy . Мне не очень нравится задавать такой конкретный вопрос о переполнении стека, но я просто не могу найти решение самостоятельно.

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 16 июля 2011

Это должно работать:

^\\*?[a-zA-Z ]+\\*?$
1 голос
/ 16 июля 2011

Если регулярное выражение должно соответствовать всем буквам Юникода: ^\*?[\p{L} ]+\*?$

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...