正则表达式帮助:提取字段

问题描述 投票:0回答:1

在 Oracle 中,我有一个数据库 CLOB 字段,我需要从中提取数据。

规格看起来像:

[<br /><b>A:</b><br />Text A which does not contain HTML[<br />]]
[<br /><b>B:</b><br />Text B which does not contain HTML[<br />]]
[<br /><b>C:</b><br />Text C which does not contain HTML[<br />]]

三者中的任何一个都可能缺失,但如果存在,它们将始终按 A、B、C 的顺序排列。字段之间并不总是有回车分隔。

我需要:

  1. 为了能够识别该字段的格式是否正确:我认为只要我检查该字段是否以
    <br /><b>
    开头就可以了,但是更好的正则表达式会很棒。
  2. 能够在没有“标题”的情况下提取 A、B 和/或 C。

例子:

有效 A C
<br /><b>A:</b><br />Foo<br /> <br /><b>B:</b><br />Bar<br /> <br /><b>C:</b><br />Baz<br />
酒吧 巴兹
<br /><b>B:</b><br />Foo
<br /><b>B:</b><br />Bar<br />
酒吧
<br /><b>A:</b><br />Foo <br /><b>B:</b><br />Bar<br />
酒吧
<br /><b>A:</b><br />Foo<br /> <br /><b>C:</b><br />Baz<br />
巴兹

是否有任何正则表达式专家可以告诉我是否/如何提取 A、B 和/或 C?

谢谢!

编辑:我在http://sqlfiddle.com/#!4/9aae2/14/0

添加了一个 SQLFiddle
sql string oracle regex-group
1个回答
0
投票

不确定这是否适用于

Oracle
,因为每个引擎都有自己的微妙之处,但是 在这里它似乎有效。

(?:\<br \/\>\<b\>[ABC]:\<\/b\>\<br \/\>([^<]+)(?:\<\/b>(?:\<br \>)?)?)?\s*\n?\s*
© www.soinside.com 2019 - 2024. All rights reserved.