我需要解析一个包含
的过滤器字符串 ">53"
"> 53"
" >53"
" >53 "
">53.21"
并提取Double 53.21
修改
Pattern p = Pattern.compile("s/^ *> *\\([0-9][.0-9]*\\) *$/\\1/p");
Matcher m = p.matcher("filterValue");
if (m.find()) {
myVal = Double.parseDouble(m.group(1));
}
的Riccardo
- 在unix中我做了
echo '> 53.21 ' | sed -n 's/^ *> *\([0-9][.0-9]*\) *$/\1/p'
答案 0 :(得分:0)
你没有捕获正则表达式中的任何组。要sed
尝试在()
周围添加[0-9][.0-9]*
,请\(([0-9][.0-9]*)\)
在Java中,模式应该是以下模式。你的正则表达式结尾处有几个无效字符。可以从sed
复制。
Pattern p = Pattern.compile("s/^[ ]*>[ ]*\\(([0-9]+(?:[.][0-9]+)?)\\)[ ]*$");