I'm trying to do a string.replaceAll(MatcherGroupThatContainsFilePath, "new string");
I'm getting an error.
compling with 1.5
I'm reading a file, looking for a regex, then creating a new string that modifies the text the regex found, then trying to replace the old string with the new. It's the first argument in the text.replaceAll(old, new) that's the problem.
the string I'm trying to replace has a windows file path in it. Here's some code that recreates the problem:
In perl there's a function: \Q$string\E you can use, where you're telling perl that you don't want anything inside $string to be evaluated as a regex. Is there anything similar in java?
What I'm trying to do is to in the actual situation (it's for work, so I don't want to post the actual data) is replace a <!DOCTYPE root-element c:\path\to\dtd> tag (that contains a file path) with a commented out doctype tag: <!-- <!DOCTYPE root-element c:\path\to\dtd> -->
What happens is that the compiler sees \\ as an escape for \, so it looks for something after the \\ and finds \h which isn't appropriate. You want it to see \\ so you need to escape the first \ to \\ and you need to escape the second \ to \\.