Java 正则表达式来匹配和替换字符串之间的两个字符

Java 正则表达式来匹配和替换字符串之间的两个字符,java,regex,Java,Regex,我有一个字符串a=“(3e4+2e2)sin(30)”;我想用a=“(3e4+2e2)*sin(30)” 我无法为此编写正则表达式。您可以使用它 String func = "sin";// or any function you want like cos. String a = "(3e4+2e2)sin(30)"; a = a.replaceAll("[)]" + func, ")*siz"); System.out.println(a); 我没有尝试,但下面的方法应该有效 String

我有一个字符串a=“(3e4+2e2)sin(30)”;我想用a=“(3e4+2e2)*sin(30)”

我无法为此编写正则表达式。

您可以使用它

String func = "sin";// or any function you want like cos.
String a = "(3e4+2e2)sin(30)";
a = a.replaceAll("[)]" + func, ")*siz");
System.out.println(a);

我没有尝试,但下面的方法应该有效

String a = "(3e4+2e2)sin(30)";
a = a.replaceAll("[)](\\w+)", ")*$1");
System.out.println(a);
a = a.replaceAll("\\)(\\s)*([^*+/-])", ") * $2");

尝试此
replaceAll

a = a.replaceAll("\) *(\\w+)", ")*$1");
这应该行得通

String a = "(3e4+2e2)sin(30)";
a = a.replaceAll("[)](\\w+)", ")*$1");
System.out.println(a);
a = a.replaceAll("\\)(\\s)*([^*+/-])", ") * $2");

假设第一个括号内的字符总是以相似的模式出现,您可以在希望插入字符的位置将该字符串一分为二,然后通过追加字符串的前半部分、新字符和后半部分来形成最终字符串

        string a = "(3e4+2e2)sin(30)";

        string[] splitArray1 = Regex.Split(a, @"^\(\w+[+]\w+\)");
        string[] splitArray2 = Regex.Split(a, @"\w+\([0-9]+\)$");

        string updatedInput = splitArray2[0] + "*" + splitArray1[1];

        Console.WriteLine("Input = {0}   Output = {1}", a, updatedInput);

a=a.replaceAll(“\”sin“,”*sin”)如果我有一个字符串a=“(3e4+2e2)cos(30)”;我希望所有字符都有一个正则表达式,而不仅仅是sin或cos。请帮助确定下面的答案。如果我有一个字符串a=“(3e4+2e2)cos(30)”;我希望所有字符都有一个正则表达式,而不仅仅是sin或cos。请帮助您将函数存储在变量中,然后执行
replaceAll
。查看我答案中的更新。我只想)将更改为)*而不是后面的任何字符,只更改在任何字符或数字之前的那些字符。请解释一下为什么我们使用\\w+,以及什么是$1和*(\\w+
\\w+
来匹配
之后的任何单词。
$1
是该单词的背面参考(捕获组#1)在替换字符串中。*(\\w+)以及为什么在空格后加闭包?圆括号用于捕获捕获组中的封闭模式。