正则表达式在字符串之间提取数据
Regex to extract data in between string
我试过下面的 ff 正则表达式,但它似乎不起作用。我想提取 F. Prepaids 和 G. Initial Escrow Payment 之间的数据并获得下面的 ff 示例结果。谢谢
#我的正则表达式
(?<=F. Prepaids)[\S\s]*?(?= G. Initial Escrow Payment)
#字符串
F. Prepaids 7.01
01 Homeowner's Insurance Premium ( 12 mo.) toAmerican Family 3.00
Insura
02 Mortgage Insurance Premium ( mo.)
03 Prepaid Interest (.99 per day from 10/02/2020 to 10/01/2020) -.99
04 Property Taxes ( mo.)
05
06
07
08
G. Initial Escrow Payment at Closing ,776.11
如果我得到介于两者之间的数据,我还想要一个正则表达式来获得 ff 结果,其他数据包括基于上面的字符串的新行。
Homeowner's Insurance Premium ( 12 mo.) to American Family Insura
Mortgage Insurance Premium ( mo.)
Prepaid Interest (.99 per day from 10/02/2020 to 10/01/2020)
Property Taxes ( mo.)
对这个有什么想法吗?谢谢你。
您可以使用
(?m)(?<=F\. Prepaids[\s\S]*?^\d+ )[^\r\n]+(?:\r?\n[^\n\d][^\r\n]*)?(?=[\s\S]*?\nG\. Initial Escrow Payment)
详情
(?m)
- 多行模式开启
(?<=F\. Prepaids[\s\S]*?^\d+ )
- 匹配紧接在 F. Prepaids
之前的位置,然后尽可能少地匹配任何零个或多个字符,然后是一行开头的 1+ 个数字,然后是 space
[^\r\n]+
- 除了 CR 和 LF 和 之外的任何一个或多个字符
(?:\r?\n[^\n\d][^\r\n]*)*
- 零个或多个 CRLF 或 LF 结尾序列,任何 non-digit 和 non-newline 字符,然后是除换行符和回车之外的任何零个或多个字符 return
(?=[\s\S]*?\nG\. Initial Escrow Payment)
- 当前位置后面必须跟
[\s\S]*?
- 尽可能少的任何零个或多个字符
\n
- 一个换行符
G\. Initial Escrow Payment
- G. Initial Escrow Payment
文本。
我试过下面的 ff 正则表达式,但它似乎不起作用。我想提取 F. Prepaids 和 G. Initial Escrow Payment 之间的数据并获得下面的 ff 示例结果。谢谢
#我的正则表达式
(?<=F. Prepaids)[\S\s]*?(?= G. Initial Escrow Payment)
#字符串
F. Prepaids 7.01
01 Homeowner's Insurance Premium ( 12 mo.) toAmerican Family 3.00
Insura
02 Mortgage Insurance Premium ( mo.)
03 Prepaid Interest (.99 per day from 10/02/2020 to 10/01/2020) -.99
04 Property Taxes ( mo.)
05
06
07
08
G. Initial Escrow Payment at Closing ,776.11
如果我得到介于两者之间的数据,我还想要一个正则表达式来获得 ff 结果,其他数据包括基于上面的字符串的新行。
Homeowner's Insurance Premium ( 12 mo.) to American Family Insura
Mortgage Insurance Premium ( mo.)
Prepaid Interest (.99 per day from 10/02/2020 to 10/01/2020)
Property Taxes ( mo.)
对这个有什么想法吗?谢谢你。
您可以使用
(?m)(?<=F\. Prepaids[\s\S]*?^\d+ )[^\r\n]+(?:\r?\n[^\n\d][^\r\n]*)?(?=[\s\S]*?\nG\. Initial Escrow Payment)
详情
(?m)
- 多行模式开启(?<=F\. Prepaids[\s\S]*?^\d+ )
- 匹配紧接在F. Prepaids
之前的位置,然后尽可能少地匹配任何零个或多个字符,然后是一行开头的 1+ 个数字,然后是 space[^\r\n]+
- 除了 CR 和 LF 和 之外的任何一个或多个字符
(?:\r?\n[^\n\d][^\r\n]*)*
- 零个或多个 CRLF 或 LF 结尾序列,任何 non-digit 和 non-newline 字符,然后是除换行符和回车之外的任何零个或多个字符 return(?=[\s\S]*?\nG\. Initial Escrow Payment)
- 当前位置后面必须跟[\s\S]*?
- 尽可能少的任何零个或多个字符\n
- 一个换行符G\. Initial Escrow Payment
-G. Initial Escrow Payment
文本。