регулярное выражение начинается с '_' и заканчивается пробелом / новой строкой в ​​Java - PullRequest
1 голос
/ 09 марта 2011

Я хочу иметь возможность найти этот шаблон '_*' значение начинается с '_' и заканчивается либо пробелом, либо новой строкой.

также у меня есть другое регулярное выражение для поиска слова заглавной буквытолько буквы: [A-Z]+ это точно, или есть лучший способ написать это?

Я использую Java.

Ответы [ 4 ]

1 голос
/ 09 марта 2011

Если вы попытаетесь

String _command = "AFTER_2011/03/01 GREATER_2004";
Pattern patt = Pattern.compile("_\\S+");
Matcher matcher = patt.matcher(_command);
while(matcher.find()) {
    String name = _command.substring(matcher.start()+1, matcher.end());
    System.out.println(name);
}

, он напечатает

2011/03/01
2004

РЕДАКТИРОВАТЬ: Как @ Алан Мур предлагает вам сделать следующее.

0 голосов
/ 09 марта 2011

Что касается [A-Z]+, он будет работать с латинским вводом. Так будет \p{Upper}+

Если вам требуется поддержка более широкого набора символов, рассмотрите \p{Lu}+, который будет соответствовать любому символу Юникода в верхнем регистре.

Javadoc шаблонов это хорошо! http://download.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html

0 голосов
/ 09 марта 2011

Если для регулярного выражения _.*(\s|\n) используется Java, вам придется написать то же самое, что и _.*(\\s|\\n)

Обновление :

Результирующие группы являются темирегулярное выражение в скобках.Так что в настоящее время получите только последний пробел или разрыв строки.

Попробуйте с этим регулярным выражением:

(_.*\\s+)

0 голосов
/ 09 марта 2011
Pattern pattern = Pattern.compile("_.*(\\s|\\n)");
Matcher matcher = pattern.matcher(_command);

// Find all matches
while (matcher.find()) {
  // Get the matching string
  String match = matcher.group();
}    

[A-Z]+ хорошо

Если вы хотите код тоже, дайте мне знать

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