Java:如何替换字符串中除 [0-9] 和 "sin","cos","tan","ctg"、 "("、 ")"之外的所有内容

标签 java regex string replaceall

我需要替换字符串中除以下字符之外的所有字符:[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引用解析为空字符串。

(?:...)仅界定非捕获组,对于两种可能性很有用 ostgc之后.

要用简单的英语翻译此正则表达式的作用:将除数字或括号之外的任何内容替换为

  • 如果它是“cos”、“sin”、“tan”或“ctg”之一,则为自身
  • 没有别的。

关于Java:如何替换字符串中除 [0-9] 和 "sin","cos","tan","ctg"、 "("、 ")"之外的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26618188/

相关文章:

java - 如何使用 Selenium 从 div 元素获取文本仅返回 "."

regex - bash:将 grep 正则表达式结果分配给数组

python - 为什么在 Python 3 中未编译的、重复使用的正则表达式要慢得多?

用C调用汇编代码,输出错误

java - 立即重新填充 EhCache,而不是等待读取

java - GMAIL:发送一封包含多个地址的电子邮件或发送多封电子邮件。哪一个更好?

Java 字符串初始化(第 2 部分)

php - 带替换的 sed 正则表达式

java - 如何在回收 View 中隐藏部分字符串?

c# - 如何检查字符串是否包含 List<string> 的任何元素?