保持正则表达式解析的数据

时间:2012-07-11 21:25:05

标签: java regex parsing

我有一个Regex模式,匹配我需要解析的数据,因为我需要它。不幸的是,使用split方法,它会删除所需的数据并将垃圾传递给我。通常情况下,我会尝试另一个正则表达式,但它并不像听起来那么简单。它必须是Java,因为这部分是更大的程序/包的一部分。

  

模式p = Pattern.compile(“/ ^ \ {\?| \:| \ = | \ ||(\ - )   的ConfigurationFile)|(isUsingRESTDescription)|(\ restURL) =(\ S | \ W | \ | \ - | \:| \ / | \; | \ [| \] | \'| \})< / EM> \ R / G“);

这是我正在解析的字符串(每个部分后都有回车符):

  • SearchResult :: getBleh():{BLEHID = BLEH blehLastmoddate = 1-Jul-11 bleh = BLEH; Beh description = blehbleh BlEh = bleh1231bleh bLeH = bleh-blehbleh 1 media = http://bleh.com/13 Date = 22-May-12 name = []} String [] items = p.split(input ^);

上面给出了与我想要的相反的东西。

你认为有人会遇到这个问题。帮助将不胜感激:)。

1 个答案:

答案 0 :(得分:3)

使用捕获组。您可以在Pattern的javadoc中了解它们。

一个例子:

  Pattern p = Pattern.compile("[^/]*/([^/]*)/.*");
  Matcher m = p.matcher("foo/bar/input");
  if (m.find()) {
     String captured = m.group(1); // This equals "bar"
     String matched = m.group(0); // This equals "foo/bar/input"
  }

位于Pattern括号内的任何内容都是一个捕获组。 Matcher根据遇到开括号的时间对捕获组编制索引。组0始终是整个匹配区域。