【问题标题】:Regex to extract a paragraph正则表达式提取段落
【发布时间】:2014-08-05 05:25:50
【问题描述】:

我需要一个正则表达式来提取每个段落并存储为字符串,以便从包含许多类似段落的文本缓冲区中进行额外处理。

示例:比如说,文本缓冲区是这样的:

===  Jun 11 14:05:39 - Person Details  ===

Person Name = "Hurlman"

Person Address = "2nd Street Benjamin Blvd NJ"

Persion Age = 25

===  Jun 11 14:05:39 - Person Details  ===

Person Name = "Greg"

Person Address = "3rd Street Benjamin Blvd NJ"

Persion Age = 26


===  Jun 11 14:05:42 - Person Details  ===

Person Name = "Michel"

Person Address = "4th Street Benjamin Blvd NJ"

Persion Age = 27

And I need to iterate through all the paragraphs and store each one of them to further find the specific person details inside.

Each paragraph I need to extract should be of the below format

===  Jun 11 14:05:42 - Person Details  ===

Person Name = "Michel"

Person Address = "4th Street Benjamin Blvd NJ"

Persion Age = 27

非常感谢任何帮助!

【问题讨论】:

  • 请提供您的银行详细信息,以便我们知道向您汇款的地点以便有机会编写此代码。
  • 对不起,这是另一种说法:你能告诉我们你的尝试吗?
  • 所以你想为每个段落创建一个新的(不同的)字符串?
  • 是的,作为进一步处理的临时字符串。

标签: java regex paragraph


【解决方案1】:

使用正则表达式来解决这个问题是可能的,但它可能会给你一个糟糕的(低效、难以理解、难以维护等)的解决方案。

您所拥有的是一种使用文本行表示的非正式记录结构。 (这不是自然语言文本,所以用“段落”来描述它是没有意义的。)

处理它的方法是一次读取一行,然后使用Scanner(或等效项)将每一行解析为名称值对。您只需要一些简单的逻辑来检测记录边界和/或检查它们是否出现在输入流中的正确位置。

【讨论】:

  • 由于我的输入将是这样的段落,其中每个段落都表示特定的信息单元,我将它们提取为段落,然后需要应用模式或扫描仪类来对段落进行操作。感谢您的回复。
【解决方案2】:

你可以使用这个模式(===.*===[\s\S]*?)(?====|$)
Demo

【讨论】:

    猜你喜欢
    • 2016-04-02
    • 2010-09-26
    • 2011-04-06
    • 2021-02-05
    • 1970-01-01
    • 2010-09-12
    • 2018-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多