проверить строку для текста, операторов и ([]) скобок - PullRequest
0 голосов
/ 30 марта 2010

я хочу, чтобы регулярное выражение для проверки строки имело только текст, операторы и эти скобки ([ ])

Ответы [ 3 ]

1 голос
/ 30 марта 2010

Я настоятельно рекомендую вам посмотреть и использовать, http://www.regexbuddy.com/.

1 голос
/ 30 марта 2010

Для соответствия этим символам:

if (str.matches("[a-zA-Z\\[\\]+\\-/*()]*")) {
  ...
}

Лучшая версия:

if (str.matches("\\s*\\[[a-zA-Z]+\\](\\s*[/*+-]\\s*\\[[a-zA-Z]+\\])*")) {
  ...
}

Поддерживать круглые скобки сложно, потому что если вы можете поместить выражения в скобки, это больше не обычный язык (это контекстно-свободный язык ). Регулярные выражения плохо подходят для сопоставления такого рода выражений. Для этого вам понадобится КПК (автомат).

0 голосов
/ 30 марта 2010
String foo = "[price] + [test]";
System.out.println(foo.matches("\\[[a-zA-Z]+\\] ?[+/*-] ?\\[[a-zA-Z]+\\]"));

и если вы хотите включить скобки в строку:

String foo = "([price] + [test])";
System.out.println(foo.matches("\\(\\[[a-zA-Z]+\\] ?[+/*-] ?\\[[a-zA-Z]+\\]\\)"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...