我正在使用处理1.0.6,它运行在java 1.6上。我有以下代码:
Pattern pattern = Pattern.compile("func\((.*),(\-?[0-9\.]*),(\-?[0-9\.]*),(\-?[0-9\.]*)\)");
但它给出了错误:
unexpected char: '('
并突出显示我上面粘贴的线条。如果我将违规\(
更改为#
之类的其他字符,则会抱怨\-
说unexpected char: '-'
。我应该能够在正则表达式引擎中使用文字,它适用于C#!
答案 0 :(得分:5)
你也需要逃避反斜杠:
"func\\((.*),(-?[0-9.]*),(-?[0-9.]*),(-?[0-9.]*)\\)"
该字符串表达式将被评估为:
func\((.*),(-?[0-9.]*),(-?[0-9.]*),(-?[0-9.]*)\)
这就是你想要的。
答案 1 :(得分:0)
你必须在Java中的字符串中转义\,前面加上\,所以
Pattern pattern = Pattern.compile("func\\((.*),(\\-?[0-9\\.]*),(\\-?[0-9\\.]*),(\\-?[0-9\\.]*)\\)");
应该有用。
答案 2 :(得分:0)
我认为您应该将"\"
替换为"\\"
Pattern pattern = Pattern.compile("func\\((.*),(\\-?[0-9\\.]*),(\\-?[0-9\\.]*),(\\-?[0-9\\.]*)\\)");
答案 3 :(得分:0)
在Java中'('和' - '不是一个需要转义的字符。所以'('表示'\',没有任何转义必需的字符,这就是错误发生的原因。解决这个问题的方法是后面的escepe -slash也是:
Pattern pattern = Pattern.compile("func\\((.*),(\\-?[0-9\\.]*),(\\-?[0-9\\.]*),(\\-?[0-9\\.]*)\\)");
如果你需要在Java和C#中使用RegEx,也许你应该编写一个从一个程序交换到另一个程序的程序。