Question

I want to replace text "1\n2" ("1" new line and "2")with for example "abcd". I've been searching a lot for solution but I can't find.

Below is my code

String REGEX = "1\n2";
Pattern p = Pattern.compile(REGEX, Pattern.DOTALL);
Matcher m = p.matcher(text);
String newText = m.replaceAll("abcd");

[EDIT] I'd like to add that text variable is read from file:

String text = new Scanner(new File("...")).useDelimiter("\\A").next();
Was it helpful?

Solution

Try to change your regex to

String REGEX = "1\\n2";

So it escapes the \n

Example:

public static void main(String[] args) {
    String REGEX = "1\n2";
    Pattern p = Pattern.compile(REGEX, Pattern.DOTALL);
    Matcher m = p.matcher("test1\n2test");
    String newText = m.replaceAll("abcd");
    System.out.println(newText);
}

O/P:

testabcdtest

Or even simply

String newText = "test1\n2test".replaceAll("1\n2", "abcd");

O/P

testabcdtest

OTHER TIPS

Why use a regex for this? Just use

String newText = text.replace("1\n2", "abcd");

try this

String str="Your String"
str=str.replace("1\n2","abc");
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top