【发布时间】:2020-06-20 00:15:31
【问题描述】:
我正在尝试检查字符串是否与格式为 x+yi 或 x-yi 的复数模式匹配。
我为此目的的正则表达式是^\d+(\.\d+)?[-\+]\d+(\.\d+)?i,它在正则表达式(regexr.com/572bb)上工作得很好。
这是我在 java 中的最小示例:
public class ExampleClass {
public static void main(){
String comp = "3+5i";
System.out.println(comp.matches("^\\d+(\\.\\d+)?[-\\+]\\d+(\\.\\d+)?i"));
}
它抛出上述异常。这是完整的:
Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character '+' near index 0
它抱怨的“+”是这个:[-\\+],但自从我逃脱它以来,它似乎并没有悬空。我是初学者,所以我会很感激我能得到的任何帮助。谢谢!
【问题讨论】:
-
@WJS 解决了这个问题:) 不过这不是问题
-
它对我有用。请查看代码here。
-
@Mandy8055 我试图理解这部分:
[-+\\\\]这不只是说“允许尽可能多的'-'”然后它转义两个分号吗?我很困惑。 -
@Mandy8055 我很抱歉可能很烦人,但我了解正则表达式的方式,我认为方括号的意思是“匹配集合中的任何字符”并且为了允许“+”字符,我必须逃避它,因为它是一个元字符。正则表达式在 Java 中的工作方式是否不同,或者我只是有点愚蠢?编辑:没有看到你的编辑:D