Java PatternSyntaxException:悬挂元字符,即使没有悬挂的元字符
我试图检查字符串是否与复数模式匹配,格式为Java PatternSyntaxException:悬挂元字符,即使没有悬挂的元字符,java,regex,Java,Regex,我试图检查字符串是否与复数模式匹配,格式为x+yi或x-yi。 为此,我的正则表达式是^\d+(\.\d+)[-\+]\d+(\.\d+)?i,它在regexr(regexr.com/572bb)上运行良好 下面是我用java编写的最简单的示例: public class ExampleClass { public static void main(){ String comp = "3+5i"; System.out.println(comp.match
x+yi
或x-yi
。
为此,我的正则表达式是^\d+(\.\d+)[-\+]\d+(\.\d+)?i
,它在regexr(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
它抱怨的“+”是这样一个:
[-\\+]
,但自从我逃过它之后,它似乎就不再摇晃了。我是一个初学者,所以我将感谢任何帮助,我可以得到。谢谢大家! 表示复合物x+yi,x-yi,你可以这样做
String comp = "3+5i";
System.out.println(comp.matches("^[0-9]+([.][0-9]+)?[+,-][0-9]+([.][0-9]+)?[i]$"));
这个问题与这个表达毫无关系。我曾经
String.split(“+”)代码>在我的代码中的其他地方,忽略了转义“+”
对于后代:使用String.split()时转义元字符代码>谢谢您的帮助!不幸的是,您的解决方案不允许我输入双位数或多位数,如“283.482+28.382i”。它还匹配“3,5i”
@Flo Klar,您是对的,我没有考虑浮点数,表达式应该是^[0-9]+([.][0-9]+)?[+,-][0-9]+([.][0-9]+]$
@WJS修复了:)这不是问题,尽管它对我有用。请看代码。@Mandy8055我正在试着理解这部分:[-+\\\\]
这不是说“允许任意多的“-”,然后它会转义两个分号吗?我很困惑。@Mandy8055我很抱歉可能很烦人,但我学习regex的方式是,我认为方括号表示“匹配集合中的任何字符”,为了允许“+”字符,我必须将其转义,因为它是元字符。正则表达式在Java中的工作方式是不同的,还是我有点傻?编辑:未看到您的编辑:请向我们发送。