регулярное выражение удалить заголовок и пунктуацию - PullRequest
0 голосов
/ 28 октября 2010

Я пытаюсь написать регулярное выражение в Java, чтобы избавиться от всех знаков препинания заголовка и хвоста, кроме "-" в строке, однако при этом пунктуация внутри слов не изменилась.

  1. Я пытался заменить знаки препинания на "", String regex = "[\\p{Punct}+&&[^-]]"; прямо сейчас, но это также удалит пунктуацию внутри слова.

  2. Я также пытался сопоставить шаблон: String regex = "[(\\w+\\p{Punct}+\\w+)]"; и Matcher.maches(), чтобы сопоставить группу, но это дает мне ноль для ввода String word = "#(*&wor(&d#)("

Мне интересно, как правильно в этом случае работать с сопоставлением групп Regex

Примеры: * 1 021 *

Input: @)($&word@)($&                   Output: word
Input: @)($)word@google.com#)(*$&$      Output: word@google.com

1 Ответ

2 голосов
/ 28 октября 2010
    Pattern p = Pattern.compile("^\\p{Punct}*(.*?)\\p{Punct}*$");
    Matcher m = p.matcher("@)($)word@google.com#)(*$&$");
    if (m.matches()) {
        System.out.println(m.group(1));
    }

Чтобы получить больше информации, ключ должен иметь метки для начала и конца строки в регулярном выражении (^ и $) и чтобы средняя часть соответствовала не жадно (используя *? Вместо просто *) .

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