如何更换一个'\'带有'\\'?当我运行时,replaceAll()我收到此错误消息.
Exception in thread "main" java.util.regex.PatternSyntaxException:
Unexpected internal error near index 1 \
^
at java.util.regex.Pattern.error(Pattern.java:1713)
at java.util.regex.Pattern.compile(Pattern.java:1466)
at java.util.regex.Pattern.<init>(Pattern.java:1133)
at java.util.regex.Pattern.compile(Pattern.java:823)
at java.lang.String.replaceAll(String.java:2190)
at NewClass.main(NewClass.java:13)
Java Result: 1
Run Code Online (Sandbox Code Playgroud)
我的代码:
public class NewClass {
public static void main(String[] args) {
String str = "C:\\Documents and Settings\\HUSAIN\\My Documents\\My Palettes";
str = str.replaceAll("\\", "\\\\");
System.out.println(str);
}
}
Run Code Online (Sandbox Code Playgroud) 我在定位Android平台2.2.3时遇到正则表达式问题.
以下正则表达式在我的桌面上定位Java VM时起作用,而正则表达式也在.NET应用程序上工作.
Pattern.compile("\\b?")
Run Code Online (Sandbox Code Playgroud)
但是当我定位我的手机时,我得到一个PatternSyntaxException.有任何想法吗?
以下字符串导致PatternSyntaxException:
Pattern.compile("*\\.*");
Run Code Online (Sandbox Code Playgroud)
我想创建一个模式,以便我可以使用以下格式过滤所有具有名称的文件: "*.*"
我怎样才能做到这一点?
我正在编写一个java程序,其中一个子任务是获取一个字符串并将其拆分到一个位置.所以,这是我的代码的一小部分:
public class Driver
{
public static void main(String[] args)
{
String str = "a+d";
String[] strparts = str.split("+");
for (String item : strparts)
{
System.out.println(item);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我期待结果:
a
d
Run Code Online (Sandbox Code Playgroud)
但令我惊讶的是,我得到:
Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character '+' near index 0
+
^
at java.util.regex.Pattern.error(Pattern.java:1955)
at java.util.regex.Pattern.sequence(Pattern.java:2123)
at java.util.regex.Pattern.expr(Pattern.java:1996)
at java.util.regex.Pattern.compile(Pattern.java:1696)
at java.util.regex.Pattern.<init>(Pattern.java:1351)
at java.util.regex.Pattern.compile(Pattern.java:1028)
at java.lang.String.split(String.java:2367)
at java.lang.String.split(String.java:2409)
at Test.Driver.main(Driver.java:8)
Run Code Online (Sandbox Code Playgroud)
这是怎么回事?
谢谢!
我想测试一个正则表达式在 Java 1.8.0_241 中是否有效
public static boolean isRegExpValid(String regExp) {
try {
Pattern.compile(regExp);
return true;
} catch (PatternSyntaxException e) {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
在这里,我正在测试三位数的正确正则表达式和不正确的正则表达式。
@Test
public void testValidRegexp() {
assertTrue(isRegExpValid("\\d{3}"));
}
@Test
public void testInvalidRegexp() {
assertFalse(isRegExpValid("{3}"));
}
Run Code Online (Sandbox Code Playgroud)
为什么我的第二次测试testInvalidRegexp失败了?isRegExpValid("{3}")应该返回false,但返回true。