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)(")