Что такое регулярное выражение Java, соответствующее шаблону оболочки 'test / *'? - PullRequest
1 голос
/ 23 августа 2011

Я хочу посмотреть, соответствует ли данная строка 'test/*', где звездочкой отмечены любые символы. Как я могу реализовать это с помощью регулярных выражений Java? Я пытался mystring.matches("test[/].*+"), но это не сработало.

test - my String
[/]  - 1× forward slash
.    - any character
*+   - 0 or more times

Что здесь не так?

Ответы [ 4 ]

3 голосов
/ 23 августа 2011

Вы используете слишком много синтаксиса. Попробуйте:

mystring.matches("test/.*")

/ не обязательно должно быть в квадратных скобках (хотя в любом случае оно будет работать одинаково), а * означает «повторить предыдущую вещь ноль или более раз». Ваши дополнительные + на конце, вероятно, вызывают вашу проблему.

2 голосов
/ 23 августа 2011

Я думаю, что регулярное выражение заставляет людей забыть, что существуют более простые методы. Если я просто что-то упустил, разве вы не можете использовать startWith ("test //")?

0 голосов
/ 23 августа 2011

Вам не нужно ставить «/» в выборе символа.Это сделает ваше выражение более сложным, чем необходимо, и станет более дорогим при оценке.Держите их как можно проще.

public static void main(String[] args) {
    String myString = "test/XYZ";
    boolean matches = myString.matches("test/.*");
    System.out.println(matches);
}

Если вы хотите сопоставить только один символ, не используйте оператор звездочки.

public static void main(String[] args) {
    String myString = "test/X";
    boolean matches = myString.matches("test/.");
    System.out.println(matches);
}
0 голосов
/ 23 августа 2011

Это зависит от того, что вы подразумеваете под «любым персонажем».

  • Если вам нужен только один символ, но вам все равно, что это, вы хотите .
  • Если вы хотите "один или нет", вы хотите .?
  • Если вы хотите «один или более», вы хотите .+
  • Если вы хотите «ноль или больше», вы хотите .*

Кроме того, вам вовсе не нужно избегать /. Таким образом, "test/." будет соответствовать «test с последующей косой чертой, за которой следует ровно один символ».

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