【问题标题】:keeping data that regex expression parses保留正则表达式解析的数据
【发布时间】:2012-07-11 21:25:05
【问题描述】:

我有一个正则表达式模式,它匹配我需要完全按照我需要解析的数据。不幸的是,使用 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^);

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

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

【问题讨论】:

  • 您想要实现的究竟是什么?这不是很清楚。你能给我们一个简单的正则表达式的简单例子吗?
  • 例如-玉米爆米花是我的输入(pop)-我的正则表达式,试图返回“pop”
  • 好的,那么@TimBender 会为您提供答案:捕获组。

标签: java regex parsing


【解决方案1】:

使用捕获组。您可以在 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 组始终是整个匹配区域。

【讨论】:

  • thanx 生病尝试一下,我正在使用一些部件,但我忘记了 m.group 如何获取参数...
猜你喜欢
  • 1970-01-01
  • 2011-08-10
  • 1970-01-01
  • 2012-10-17
  • 1970-01-01
  • 1970-01-01
  • 2011-08-08
  • 2016-04-24
  • 1970-01-01
相关资源
最近更新 更多