2012-04-24 133 views
0

我需要解析此字符串并从中提取粗体数字。 我没有为 1. useInput合适的正则表达式可以是 = “0067711990999999 * * 0515070999999999999N9 + 01 * 23 * 1 + 99999999 ..”;模式匹配识别字符串中的粗体字符

Pattern pattern; 
    String regex="\\s*-?\\d+(?:\\s*[-+/*]\\s*-?\\d+)+\\s*"; 
    pattern=Pattern.compile(regex); 
    Matcher match = pattern.matcher(userInput); 

的问题是我不找任何正则表达式匹配字符串大胆。

我需要这个在一个Map-Reduce程序。

感谢

+0

在这种情况下,什么是“大胆”数字? – claesv 2012-04-24 06:51:19

+0

一年以上** 1955 *和温度* 23 *。 – 2012-04-24 06:55:29

+1

字体更改本身不是字符。也许你原始形式的输入有某种顺序,表示字体改变;你可以确定它的顺序和匹配。请注意,如果这个序列是HTML,那么解析可能会出错;除了匹配HTML标签的常见问题之外,您可能需要担心CSS。 – geekosaur 2012-04-24 06:59:06

回答

0

如果您正在阅读.odt文件,或许http://www.jopendocument.org/是要走的路?

+0

ok对于odt它是有用的,但.log文件我会有问题。但无论如何,谢谢。 – 2012-04-25 06:59:07

0

下面的代码

String myString = "0067711990999999*1955*0515070999999999999N9+01*23*1+99999999"; 
// matches all number series (one or more consecutive digits) 
// between * characters. * normally matches any character and 
// so has to be escaped using \, which in a string becomes \\, 
// i.e the regular expression is actually \*([0-9])\* 
Pattern pattern = Pattern.compile("\\*([0-9]+)\\*"); 
Matcher matcher = pattern.matcher(myString); 
while (matcher.find()) { 
    // the parantheses in the regex creates a capturing group, i.e. 
    // a substring within the match that can later be extracted. 
    // the "1" here means we're picking up the value of the first 
    // (and in this case, only) capturing group, which is the 
    // actual numbers (i.e. not including the * characters) 
    System.out.println(matcher.group(1)); 
} 

将打印

1955 
23 

这就是你想要的?

+0

是的。但事情是在输入* 1995 *和* 23 *的意思是粗体。 *不包含在字符串中,我正在从日志文件和.odt文件中读取这些文件。 – 2012-04-24 07:05:51

+0

好的,我不确定正则表达式可以帮助你。请参阅上面的@geekosaur的评论。请更新您的问题,以包含一个_actual_ userInput字符串,从日志文件/ .odt文件中读取。 – claesv 2012-04-24 07:07:49

+0

好的。输入日志为006779195005150704 .................. 999999999999N9 + 00031 + 999999999 ....... 006771199991954051507004 .............. .... 999999999999N9 + 00111 + 999999999 ....... 00677119909999991955051507004 .................. 999999999999N9....... 00677119909999991956051507004 .................. 999999999999N9 + 00121 + 999999999 ....... 00677119909999991957051507004 .................. 999999999999N9 + 00121 + 999999999 ....... 00677119909999991954051507004 .................. 999999999999N9 + 00511 + 999999999 ....... 00677119909999991954051507004 .... .............. 999999999999N9 + 00111 + 999999999 – 2012-04-24 08:47:35