Java 删除单词开头的标点符号

Java 删除单词开头的标点符号,java,regex,Java,Regex,我在这里看到了一些线索,这与我在这里提出的问题相匹配。但没有一个是具体的。如果我有一个类似于“New delish”的字符串,我希望我的代码提取New delish。所以这里的引文被删去了。我想去掉所有的标点符号,通常在开头和结尾 到目前为止,这有助于去除末尾的标点符号:String replacedString=replacement_String.replaceAll(“\\p{Punct}*([a-z]+)\\p{Punct}*”,“$1”) 我做错了什么?我的输出是新德里,开头的引用仍然

我在这里看到了一些线索,这与我在这里提出的问题相匹配。但没有一个是具体的。如果我有一个类似于
“New delish”
的字符串,我希望我的代码提取
New delish
。所以这里的引文被删去了。我想去掉所有的标点符号,通常在开头和结尾 到目前为止,这有助于去除末尾的标点符号:
String replacedString=replacement_String.replaceAll(“\\p{Punct}*([a-z]+)\\p{Punct}*”,“$1”)

我做错了什么?我的输出是新德里
,开头的引用仍然存在

String replacedString = replacable_string.replaceAll("^\"|\"$", "");

也应该有效。

尝试使用以下方法:

String data = "\"New Delhi\"";
    Pattern pattern = Pattern.compile("[^\\w\\s]*([\\w\\s]+)[^\\w\\s]*");

    Matcher matcher = pattern.matcher(data);
    while (matcher.find()) {
        // Indicates match is found. Do further processing
        System.out.println(matcher.group(1));
    }
试一试


您的[a-z]只捕获小写字母,不捕获空格。请尝试([a-zA-z])

以下操作将从
字符串的开头和结尾删除标点字符(如果存在):

String s = "\"New, Delhi\"";

// Output: New, Delhi
System.out.println(s.replaceAll("^\\p{Punct}|\\p{Punct}$", ""));
正则表达式的
^
部分表示文本的开头,
$
表示文本的结尾。因此,
^\p{Punct}
将匹配第一个字符的标点,
\p{Punct}$
将匹配最后一个字符的标点。我使用了
(或)匹配第一个表达式或第二个表达式,结果是
^\p{Punct}|\p{Punct}$

如果要删除
字符串
对象开头和结尾的所有标点字符,可以使用以下命令:

String s = "\"[{New, Delhi}]\"";

// Output: New, Delhi
System.out.println(s.replaceAll("^\\p{Punct}+|\\p{Punct}+$", ""));
我只是在每个
\p{Punct}
之后添加了
+
符号。
+
符号表示“一个或多个”,因此如果在文本的开头或结尾出现许多标点符号,它将匹配这些标点符号

希望这就是你想要的:)

结果:

Input: "New Delhi"
Output: (")(New Delhi)(")

谢谢。但是:事实上,这不能处理所有类型的标点符号。就像它不能提取新德里,
并在结尾保留逗号一样。但是再次感谢!最好的解决方案。这对任何标点符号都有效。理由也很好。干杯!一个问题:我们如何修改上面的内容来提取这些特殊类型的引号:
code
“我亲爱的瓦伦丁”
code
你可以使用以下命令:
s.replaceAll(“^[\\p{Punct}”“]+|[\\p{Punct}”“]+$”,”)
[
]
表示一组字符,因此您在其中添加的任何字符都将添加到混合中。我不知道这些引号是否清晰。这些文档是web文档,包含有趣的字符。也许,我可能必须从单词的开头和结尾删除任何非字母字符。我们如何才能做到这一点?我不认为有一些是我文档中的标点符号。如果我复制粘贴在此处,它可能不清晰。您可以删除任何非字母数字,如:
s.replaceAll(^[^0-9a-zA-Z]+|[^0-9a-zA-Z]+$,”)
中的
对组进行否定,使其匹配除包含的字符外的所有字符。
String s = "\"[{New, Delhi}]\"";

// Output: New, Delhi
System.out.println(s.replaceAll("^\\p{Punct}+|\\p{Punct}+$", ""));
class SO {
    public static void main(String[] args) {
        String input = "\"New Delhi\"";
        String output = "";

        try {
            output = input.replaceAll("(^\\p{P}+)(.+)(\\p{P}+$)", "($1)($2)($3)");
        } catch (IndexOutOfBoundsException e) {
        }

        System.out.println("Input: " + input);
        System.out.println("Output: " + output);
    }
}
Input: "New Delhi"
Output: (")(New Delhi)(")