0

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

模式 p = Pattern.compile("/^\{\?|\:|\=|\||(\- configurationFile)|(isUsingRESTDescription)|(\restURL) =(\s|\w|\.|\ -|\:|\/|\;|\[|\]|\'|\}) \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^);

上面的内容与我想要的相反。

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

4

1 回答 1

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"
  }

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

于 2012-07-11T21:35:57.060 回答