正则表达式删除标题和拖尾标点符号

时间:2010-10-28 15:36:41

标签: java regex string

我正在尝试用Java编写一个正则表达式,以除去字符串中除"-"之外的所有标题和拖尾标点符号,但保持单词中的标点符号完整无缺。

  1. 我现在尝试用""String regex = "[\\p{Punct}+&&[^-]]";替换标点符号,但它也会删除单词中的标点符号。

  2. 我还尝试匹配模式:String regex = "[(\\w+\\p{Punct}+\\w+)]";Matcher.maches()以匹配某个组,但它为输入String word = "#(*&wor(&d#)("

  3. 提供了null

    我想知道在这种情况下处理正则表达式组匹配的正确方法是什么

    示例:

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

1 个答案:

答案 0 :(得分:2)

    Pattern p = Pattern.compile("^\\p{Punct}*(.*?)\\p{Punct}*$");
    Matcher m = p.matcher("@)($)word@google.com#)(*$&$");
    if (m.matches()) {
        System.out.println(m.group(1));
    }

要提供更多信息,关键是在正则表达式(^和$)中为字符串的开头和结尾添加标记,并使中间部分非贪婪地匹配(使用*?而不仅仅是*)