У меня есть строка String a = "(3e4 + 2e2) sin (30)"; и я хочу показать его как a = "(3e4 + 2e2) * sin (30)";regex для соответствия и замены двух символов между строкой
Я не могу написать для этого регулярное выражение.
У меня есть строка String a = "(3e4 + 2e2) sin (30)"; и я хочу показать его как a = "(3e4 + 2e2) * sin (30)";regex для соответствия и замены двух символов между строкой
Я не могу написать для этого регулярное выражение.
Попробуйте replaceAll
:
a = a.replaceAll("\) *(\\w+)", ")*$1");
вы можете объяснить это немного, пожалуйста, почему мы используем \\ w + и что такое $ 1 и * (\\ w +) –
'\\ w +' для соответствия любому слову после ')' и '$ 1' является обратной ссылкой это слово (захваченная группа № 1) в заменяющей строке. – anubhava
* (\\ w +) и почему вы положили закрытие после некоторого пространства? –
Вы можете пойти с этим
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);
и что, если у меня есть строка a = "(3e4 + 2e2) cos (30)"; Я хочу иметь регулярное выражение для всех символов, а не только грех или cos, пожалуйста, помогите –
Вам нужно сохранить свою функцию в переменной, а затем выполнить команду replaceAll. см. обновления в моем ответе. – Salah
Я хочу только) изменится с) * не будет символов после и только тех), которые перед любым символом или цифрой –
Я не пробовал, но должно работать
String a = "(3e4+2e2)sin(30)";
a = a.replaceAll("[)](\\w+)", ")*$1");
System.out.println(a);
показывает результат "(3e4 + 2e2) * 1 (30)" –
Я принимаю синтаксис регулярного выражения в java corrected –
это должно работать
a = a.replaceAll("\\)(\\s)*([^*+/-])", ") * $2");
String input = "(3e4+2e2)sin(30)".replaceAll("(\\(.+?\\))(.+)", "$1*$2"); //(3e4+2e2)*sin(30)
Если предположить, что символы в первых скобках всегда будет в аналогичной схеме, вы можете разделить эту строку на две части в месте, где вы хотели бы, чтобы вставить символ, а затем образуют конечную строку, присоединяя первую половину строки, нового символа и второй половины строки.
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.replaceAll ("\) грех", ") * грех");' – anubhava
и что, если у меня есть строка = "соз (3E4 + 2E2) (30)"; Я хочу иметь регулярное выражение для всех символов, а не только грех или cos, пожалуйста, помогите –
ok проверьте мой ответ ниже. – anubhava