正则表达式选择最多换行符

时间:2013-03-01 16:05:31

标签: regex

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

我的表达式atm提取信息(所有这些在CORP ACT OPTION之后)是

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

示例dara:

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?以上非常感谢。

3 个答案:

答案 0 :(得分:1)

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

'CORP ACT OPTION NO.([\s\S]*)[\n|\r\n|\r]{2}'

答案 1 :(得分:0)

/.*\s*:\s*.*/g应该可以正常工作。如果没有m,则匹配不会匹配多行。

正则表达式的解释:

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

Regex101 Demo

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

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

Regex 101 Demo

答案 2 :(得分:0)

我猜(CORP ACT OPTION NO.*?)(?:\r|\n|\r\n){2}就是你要找的东西。检查此demo以查看其是否有效。不要忘记DOTALL标志。