Я ищу шаблон регулярного выражения, а не код Java, чтобы соответствовать последнему слову в предложении на английском (или европейском языке). Если последнее слово, в данном случае, «привет», то я хочу соответствовать «привет», а не «привет».regex последнее слово в предложении, заканчивающемся пунктуацией (период)
Регулярное выражение (\w+)\.$
будет соответствовать «привет», тогда как выход должен быть просто «привет». Какое правильное регулярное выражение?
[email protected]:~/NetBeansProjects/regex$
[email protected]:~/NetBeansProjects/regex$ java -jar dist/regex.jar
trying
a b cd efg hi
matches:
hi
trying
a b cd efg hi.
matches:
[email protected]:~/NetBeansProjects/regex$
код:
package regex;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String matchesLastWordFine = "a b cd efg hi";
lastWord(matchesLastWordFine);
String noMatchFound = matchesLastWordFine + ".";
lastWord(noMatchFound);
}
private static void lastWord(String sentence) {
System.out.println("\n\ntrying\n" + sentence + "\nmatches:");
Pattern pattern = Pattern.compile("(\\w+)$");
Matcher matcher = pattern.matcher(sentence);
String match = null;
while (matcher.find()) {
match = matcher.group();
System.out.println(match);
}
}
}
Мой код в Java, но это не является ни здесь, ни там. Я строго ищу регулярное выражение, а не код Java. (Да, я знаю, что можно удалить последний символ с помощью Java.)
Какое регулярное выражение нужно поместить в шаблон?
регулярного выражения вы используете в вашем код делает не имеет '\ .' в нем. Ваше регулярное выражение выглядит правильно для меня, группа захвата будет содержать слово без периода. – cyon
Подождите, так что вы хотите совместить последнее слово в строке. И если линия заканчивается периодом, то вы не хотите иметь период? – Taemyr
@Taemyr точно. если есть период, то только последнее слово. – Thufir