Как узнать все строки, окруженное двойной кавычки "
и заменить их новой строки?
Input Output
----- ------
'Hello "User", what up?' -> 'Hello l("User"), what up?'
'Regexes are "so complex"' -> 'Regex are l("so complex")'
как это сделать в Java?
Ищите ("[^"\n]+")
, замените на l($1)
:
str = str.replaceAll("(\"[^\"\n]+\")", "l($1)");
Если вы хотите разрешить обратные слэши в кавычках, например "These are \"Nested\" quotes"
вы можете использовать выражение, подобное этому:
("(?:[^"\\\n]|\\.)*")
Используется в Java так:
str = str.replaceAll("(\"(?:[^\"\\\\\n]|\\\\.)*\")", "l($1)");
Попробуй это:
String newValue=oldValue.replaceAll("\"([^\"]*?)\"", "(\"$1\")");
У вас в основном есть одна проблема, дважды. Вы пытаетесь поместить вещи (*
и \w
) в класс символов, которые не входят в эти скобки. Вы уже нашли предопределенный класс символов (\w
), поэтому можете просто использовать его напрямую:
"\w*" // These would be nested quotes, and I'm omitting escapes for clarity
Это эквивалентно: "[a-zA-Z_0-9]*"
Когда вы делаете свою замену, вам нужно зафиксировать совпадение, поэтому используйте скобки для создания группы захвата. Пример ниже должен работать для ваших нужд (включая экраны и т.д.).
String bro = "Hello \"bro\", what \"up\"?";
String replaced = bro.replaceAll("(\"\\w*\")", "l($1)");
System.out.println(replaced); // prints: Hello l("bro"), what l("up")?
Если вы хотите захватить пробелы и пунктуацию в кавычках, а не только одиночные, нечитаемые слова, вы можете просто заменить \\w
символьным классом, который содержит персонажи, которые вас интересуют. Подстройте его к конкретным потребностям вашей операции. Если вы не хотите вообще различать содержимое, вы можете использовать [^\"]
(обратите внимание на необходимость избежать "
), чтобы он соответствовал любому символу без двоичного слова:
String bro = "Hello \"bro\", \"what up\"?";
String replaced = bro.replaceAll("(\"[^\"]*\")", "l($1)");
System.out.println(replaced); // prints: Hello l("bro"), l("what up")?
"These are "Nested" quotes"
будет похоже на"These are \"Nested\" quotes"
, теперь это изменит регулярное выражение?