用于在数字模式和冒号或换行符之间提取字符串的正则表达式

Regex to extract string between digit pattern and colon or newline

我必须在数字模式和冒号或换行符(第一次出现)之间提取字符串

我的字符串看起来像:

05-30-1306-29-13 BUILDERS RISK:
LIMITS/DEDUCTIBLES:

我想提取 BUILDERS RISK。可能有也可能没有冒号,在这种情况下我们将换行符视为终止模式

这是我到目前为止的想法

\d{2}-\d{2}-\d{4}-\d{2}-\d{2}\s*\W+[^:|\n]+:\s*

数字模式将始终为 2-2-4-2 后跟任何字符串,后跟 \n 或 :

到目前为止,正则表达式满足了我的需要,但我不知道如何将它分成不同的匹配项,以便我可以进行第二个匹配项

1st match - digit pattern

2nd match - what i need

3rd match - colon or newline

任何指点都会有所帮助。

更新:要搜索的文本术语的几个备选方案可能是这个

11-06-1212-29-12 DWELLING FIRE (DP-3): ANNUAL RENTAL

11-05-1212-26-12 HOMEOWNERS (HO-3): SECONDARY HOME

我只想要冒号之前的任何内容,或者如果不存在,则使用字符串直到找到换行符。作为旁注,重要的文本可能不会出现在同一行中,而是出现在下一行中,但在同一行中始终跟在冒号或换行符之后。

PS:提取的文本不应包含冒号

看来你可以使用

\b(\d{2}-\d{2}-\d{4}-\d{2}-\d{2})\W+(.*?)(:?\r?\n\s*)

看到 regex demo 屈服

详情

  • \b - 单词边界(如果数字可以粘贴到字母或下划线,则更改为 (?<!\d)
  • (\d{2}-\d{2}-\d{4}-\d{2}-\d{2}) - 第 1 组:两位数字,-,两位数字,-,四位数字,-,两位数字,-,两位数
  • \W+ - 1+ 个非单词字符(保留在线,替换为 [^\w\r\n]+
  • (.*?) - 第 2 组:除换行符外的任何零个或多个字符,尽可能少
  • (:?\r?\n\s*) - 第 3 组:一个可选的 :,一个可选的 CR,一个 LF 符号,然后是任何 0+ 空白字符。