Java 尝试使用正则表达式更改字符串

Java 尝试使用正则表达式更改字符串,java,regex,Java,Regex,我有一个非常简单的正则表达式,它似乎不能正常工作。我的正则表达式的理想结果是,我将它与replaceAll一起使用,将任何不是a-z、a-z或0-9的字符替换为零(“”)。我意识到关于同一件事有很多问题,但我对regex是新手,我在这些问题中看到的问题太复杂了,无法帮助我调试自己的问题。我甚至尝试使用regexr.com来帮助我,但都没有用 这是我的正则表达式: s.replaceAll("^[^a-zA-Z0-9]+", ""); s.replaceAll("[^a-zA-Z0-9]+$",

我有一个非常简单的正则表达式,它似乎不能正常工作。我的正则表达式的理想结果是,我将它与replaceAll一起使用,将任何不是a-z、a-z或0-9的字符替换为零(“”)。我意识到关于同一件事有很多问题,但我对regex是新手,我在这些问题中看到的问题太复杂了,无法帮助我调试自己的问题。我甚至尝试使用regexr.com来帮助我,但都没有用

这是我的正则表达式:

s.replaceAll("^[^a-zA-Z0-9]+", "");
s.replaceAll("[^a-zA-Z0-9]+$", "");

我尝试过许多不同的方法,包括
^[^a-zA-Z0-9]+$
^[^a-zA-Z0-9]*
的变体,但它们都不能正常工作。它们似乎都在不应该使用的单词上留下了尾随标点符号。如有任何建议,我们将不胜感激。谢谢。

s=s.replaceAll(“[^a-zA-Z0-9]”,“)@JBNizet,工作非常完美!非常感谢你。如果你能把它写在一个答案里,我会把它标记为正确的,这样你就可以得到学分了。你的问题是重复的。我再也回答不了了。阅读副本,获得真实的答案和解释。您的正则表达式没有理由在开头包含^,在结尾包含$。您只需替换与
[^a-zA-Z0-9]
匹配的任何子字符串,即不是字母或数字的子字符串,而不替换为任何内容。@JBNizet哦,好的。我想会的。这真的是由于“^”和“$”造成的,就像重复语句所说的那样,还是因为我没有执行
s=
?这两者都是(我认为您正确地重新分配了值,因为您告诉它叶尾标点符号。replaceAll返回一个新字符串,而不更改原始字符串)。