我需要替换字符串中除以下字符之外的所有字符:[0-9] 和 "sin"、"cos"、"tan"、"ctg"、"("、 ")"
我认为我需要使用 String.replaceAll("some regex","")
但无法找到正确的正则表达式。
例如,如果我有以下字符串:123321323n3k332313jbj323sin232323jkjctg2323
。
我需要在替换后得到这个:1233213233332313323sin232323ctg2323
需要用空字符“”替换坏字符
解决方案: String.replaceAll("(c(?:os|tg)|sin|tan)|[^0-9\\(\\)]","$1");
感谢 Krayo
最佳答案
我认为您正在寻找的是:
(c(?:os|tg)|sin|tan)|[^0-9)(]
使用此替换字符串:
$1
首先测试并捕获括号之间的内容。 $1
是对此捕获的引用。如果这些括号的内容不匹配,则不会捕获任何内容,并且 $1
引用解析为空字符串。
(?:...)
仅界定非捕获组,对于两种可能性很有用 os
和tg
在c
之后.
要用简单的英语翻译此正则表达式的作用:将除数字或括号之外的任何内容替换为
- 如果它是“cos”、“sin”、“tan”或“ctg”之一,则为自身
- 没有别的。
关于Java:如何替换字符串中除 [0-9] 和 "sin","cos","tan","ctg"、 "("、 ")"之外的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26618188/