Java 正则表达式替换字符串开头和结尾的标点符号

Java 正则表达式替换字符串开头和结尾的标点符号,java,Java,在java中,如何删除字符串第一个字符和最后一个字符中除“之外的所有标点符号。我尝试将regex与replaceFirst()一起使用,但没有成功 比如说!!abc3@将成为abc3, !!abc3@@将变成!abc3@ 而“abc3”仍将保持为“abc3” 这就是我想到的 .replaceFirst(“^a-zA-Z0-9']”和“).replaceFirst(“[^a-zA-Z0-9']”和“) 但编译器似乎不接受它。我收到一个“找不到符号”错误。使用正则表达式,解决方案是(您的解决方案):

在java中,如何删除字符串第一个字符和最后一个字符中除“之外的所有标点符号。我尝试将regex与replaceFirst()一起使用,但没有成功

比如说!!abc3@将成为abc3,
!!abc3@@将变成!abc3@
而“abc3”仍将保持为“abc3”

这就是我想到的
.replaceFirst(“^a-zA-Z0-9']”和“).replaceFirst(“[^a-zA-Z0-9']”和“)


但编译器似乎不接受它。我收到一个“找不到符号”错误。

使用正则表达式,解决方案是(您的解决方案):

非正则表达式的答案更简单,而且可能更快

        String in = "!abc3@";
        String out = in;
        if( (!in.isEmpty()) && (!Character.isLetterOrDigit(in.charAt(0))) )
            out = in.substring(1, in.length());
        if( (!out.isEmpty()) && (!Character.isLetterOrDigit(out.charAt(out.length() - 1))) )
            out = out.substring(0, out.length() - 1);
        System.out.println("result: " + out);

你能告诉我们你尝试了什么和一些输入输出的例子吗?你尝试了什么?它是如何失败的?您应该显示输入和输出示例以获得准确的答案。这就是我所做的:`.replaceFirst(^[^a-zA-Z0-9']',“”)。replaceFirst([^a-zA-Z0-9']$,“”)`您需要提供完整的代码。我认为你的方法大体上是正确的,但你在某个地方有语法问题。
        String in = "!abc3@";
        String out = in;
        if( (!in.isEmpty()) && (!Character.isLetterOrDigit(in.charAt(0))) )
            out = in.substring(1, in.length());
        if( (!out.isEmpty()) && (!Character.isLetterOrDigit(out.charAt(out.length() - 1))) )
            out = out.substring(0, out.length() - 1);
        System.out.println("result: " + out);