我正在尝试用Java编写一个正则表达式,以除去字符串中除"-"
之外的所有标题和拖尾标点符号,但保持单词中的标点符号完整无缺。
我现在尝试用""
,String regex = "[\\p{Punct}+&&[^-]]";
替换标点符号,但它也会删除单词中的标点符号。
我还尝试匹配模式:String regex = "[(\\w+\\p{Punct}+\\w+)]";
和Matcher.maches()
以匹配某个组,但它为输入String word = "#(*&wor(&d#)("
我想知道在这种情况下处理正则表达式组匹配的正确方法是什么
示例:
Input: @)($&word@)($& Output: word
Input: @)($)word@google.com#)(*$&$ Output: word@google.com
答案 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));
}
要提供更多信息,关键是在正则表达式(^和$)中为字符串的开头和结尾添加标记,并使中间部分非贪婪地匹配(使用*?而不仅仅是*)