оставьте первые 2 слова и последнее слово в предложении - PullRequest
0 голосов
/ 21 марта 2012

я хочу оставить первые 2 слова и последнее слово в предложении, включая вопросительный знак в конце предложения.

wie ging er ook alweer allemaal mee wat drinken в Утрехте?

должно превратиться в

Оно также должно работать, когда предложение состоит из 3 слов.Так что

в Утрехте?

должны оставаться неизменными

Независимо от того, что я пытаюсь, я найду несколько букв или ничего, кто-то может датьрука помощи?У меня есть хорошая книга о регулярных выражениях, но у меня нет времени до лета: (

Ответы [ 4 ]

4 голосов
/ 21 марта 2012

Попробуйте это ... использует String.split ()

String s = "wie ging er ook alweer allemaal mee wat drinken in Utrecht?";
String words[] = s.split(" ");
String firstTwo = words[0] + "  " + words[1]; // first two words
String lastOne = words[words.length - 1]; // last one
2 голосов
/ 21 марта 2012

Это не подходящее место для использования регулярных выражений.

Правильный способ сделать это в Java - использовать BreakIterator для обнаружения «слов» и обработки их в соответствии с вашей логикой. Простое разбиение на символы может быть семантически правильным и не на всех языках.

Печать первого элемента:

 public static void printFirst(BreakIterator boundary, String source) {
     int start = boundary.first();
     int end = boundary.next();
     System.out.println(source.substring(start,end));
 }

Печать последнего элемента:

 public static void printLast(BreakIterator boundary, String source) {
     int end = boundary.last();
     int start = boundary.previous();
     System.out.println(source.substring(start,end));
 }

Распечатать элемент в указанной позиции:

 public static void printAt(BreakIterator boundary, int pos, String source) {
     int end = boundary.following(pos);
     int start = boundary.previous();
     System.out.println(source.substring(start,end));
 }
1 голос
/ 21 марта 2012

Регулярное решение

^((?:\w+\s+){2}).*?(\S+)$

и заменить на $1$2

Посмотри здесь на Regexr

0 голосов
/ 21 марта 2012

Просто разделите пробелы и возьмите первые два / последний, убрав пунктуацию, если необходимо, из первых двух слов, и убедившись в длине.Нет смысла использовать регулярные выражения.

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