[英]Regex to extract string between digit pattern and colon or newline
我必須在數字模式和冒號或換行符之間提取字符串(第一次出現)
我的字符串看起來像:
05-30-1306-29-13 建築商風險:
限額/免賠額:
我想提取 BUILDERS RISK。 可能有也可能沒有冒號,在這種情況下,我們將換行視為終止模式
這是我到目前為止想出的
\d{2}-\d{2}-\d{4}-\d{2}-\d{2}\s*\W+[^:|\n]+:\s*
數字模式將始終是 2-2-4-2 后跟任何字符串,后跟 \n 或:
到目前為止,正則表達式得到了我需要的東西,但我不知道如何將它分成不同的匹配,所以我可以參加第二場比賽
第一場比賽 - 數字模式
第二場比賽 - 我需要什么
第三場比賽 - 冒號或換行符
任何指針都會有所幫助。
更新:要搜索的文本術語的幾個替代項可能是這個
11-06-1212-29-12 住宅火災 (DP-3):年租金
11-05-1212-26-12 房主 (HO-3):第二居所
我只想要冒號之前的任何內容,或者如果不存在,則取字符串直到找到換行符。 作為旁注,重要的文本可能不會出現在同一行中,而是出現在下一行,但在同一行中總是跟在冒號或換行符之后。
PS:提取的文本不應包含冒號
看來您可以使用
\b(\d{2}-\d{2}-\d{4}-\d{2}-\d{2})\W+(.*?)(:?\r?\n\s*)
請參閱產生的正則表達式演示
細節
\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+ 個空白字符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.