Reputation: 4908
I want to remove a string at the beginning of another.
Example:
Begin | Removed | Final |
---|---|---|
"\n123 : other" | Yes | other |
"123 : other" | No | Error |
"\n4 : smth" | Yes | smth |
"123 : a" | No | Error |
Thanks to Regexr, I made this regex:
/[\\][n](?:[0-9]*)[ ][:]/g
I tried to use it in Java. With string.matches()
I don't have any error. But, with string.replaceFirst
, I have this error :
java.util.regex.PatternSyntaxException: Unclosed character class near index 24
/[\][n](?:[0-9]*)[ ][:]/g
^
What I tried else ?
/
at begin and /g
at end.(pattern)
(such as visible in regex here)My full code:
String str = "\n512 : something"; // I init my string
if(str.matches("/[\\][n](?:[0-9]*)[ ][:]/g"))
str = str.replaceFirst("/[\\][n](?:[0-9]*)[ ][:]/g", "");
How can I fix it ? How can I solve my regex pattern ?
Upvotes: 1
Views: 535
Reputation: 627128
You can use
.replaceFirst("\n[0-9]+\\s+:\\s*", "")
The regex matches
\n
- a newline char (you have a newline in the string, not a backslash and n
)[0-9]+
- one or more digits\s+
- one or more whitespaces:
- a colon\s*
- zero or more whitespacesSee the Java demo:
List<String> strs = Arrays.asList("\n123 : other", "123 : other", "\n4 : smth", "123 : a");
for (String str : strs)
System.out.println("\"" + str.replaceFirst("\n[0-9]+\\s+:\\s*", "") + "\"");
Output:
"other"
"123 : other"
"smth"
"123 : a"
Upvotes: 2