匹配" - "有完全出乎意料的结果

int*_*ing 1 java regex

我有可能是一个表达式13.33,15.66-17.22,17.33-17.66.我希望能够弄清楚它是否有"-"(en-dash),因为这会改变我的代码运行方式.我按照这个线程检查表达式中的匹配项.

我找到en-dash的正则表达式是"-".我正则表达式表达的作品在网上可以看出这里在Java中使用时,但失败.我的代码如下.

Pattern p = Pattern.compile("-");
Matcher m = p.matcher(refVal);
System.out.println(m.find());
if (m.find()){
    //Do stuff  
}
Run Code Online (Sandbox Code Playgroud)

使用条目,17.33–17.66 ref代码打印false.

预期用例:

Input: 17.33-17.66 reasdfkljasdfjlkadsf
Output: m.find() should be true

Input: 17.33
Output: m.find() should be false

Input: 2-3 five blah foo
Output: m.find() should be true
Run Code Online (Sandbox Code Playgroud)

ndn*_*kov 6

问题是在输入字符串中,短划线是(150 ascii),而模式中的短划线是-(45 ascii).参考