9

我试图在CORP ACT OPTION NO2 个新行和回车之后选择所有内容(例如,直到保管帐户)

我用于提取信息的 reg 表达式 atm(所有信息都在 CORP ACT OPTION 之后)是

CORP ACT OPTION NO\.([\s\S]*)

样品达拉:

CORP ACT REFERENCE                  : 007XS0212069115
SENDER'S REFERENCE                  : 1212070800330001
FUNCTION OF MESSAGE                 : NEW MESSAGE
CORP ACT EVENT                      : INTEREST PAYMENT
PLACE OF SAFEKEEPING                : US
ISIN                                : XS0212069115
ISIN/DESCRIPTION                    : KFW 4.750 071212 GBP
METHOD OF INTEREST COMPUTATION      : A006
EX-DATE                             : 20121207
RECORD DATE                         : 20121206
CORP ACT OPTION NO.                 : 001
CORPORATE ACTION OPTION CODE        : CASH
CURRENCY OPTION                     : GBP
RESULTING AMT                       : GBP617,5
PAYMENT DATE                        : 20121207
EXCHANGE RATE                       : GBP/GBP/1,
INTEREST RATE                       : 4,75

SAFEKEEPING ACCOUNT                 : 000000000000
CONFIRMED BALANCE                   : FAMT/13000,
CREDIT/DEBIT IND                    : CREDIT

在上面的换行符之前如何选择SAFEKEEPING ACCOUNT?非常感谢。

4

3 回答 3

5

/.*\s*:\s*.*/g应该可以正常工作。没有m匹配就不会匹配超过一行。

正则表达式的解释:

  • .* 尽可能匹配,直到后面跟着:
  • \s*:*任意数量的空格(0个或更多)后跟一个字面:字符
  • \s* 任意数量的空格(0 个或更多)
  • .* 尽可能匹配直到换行

正则表达式 101 演示

您还可以使用捕获组并检查每个键的每个值:

/(.*)\s*:\s*(.*)/g

正则表达式 101 演示

于 2013-03-01T16:10:26.247 回答
1

基于您的文件格式、编码、操作系统...的新行可能是 '\r'、'\r\n' 或 '\n'。所以你需要匹配其中任何一个,即[\n|\r\n|\r]{2}

'CORP ACT OPTION NO.([\s\S]*)[\n|\r\n|\r]{2}'
于 2013-03-01T16:12:38.593 回答
0

我想(CORP ACT OPTION NO.*?)(?:\r|\n|\r\n){2}这就是你要找的。检查此演示以查看它的工作原理。不要忘记DOTALL国旗。

于 2013-03-01T16:12:45.583 回答