2

我有这个:

 var blockRegEx = new Regex("(proc sql;)(.*?)(quit;)", RegexOptions.IgnoreCase | 
      RegexOptions.Multiline); 

但它仅在字符串位于单行时才有效。

例如:

proc sql;
create table xtr as
select
    midsu_client_id,
    prodt_cd,
    confmt_ind,
    maj_diag_categ,
    mbr_num,
    pay_amt format=comma16.2
from cr_data.rptng
where &acctnum
and gl_postg between "&date_1" and "&date_2"
;
quit;
4

1 回答 1

2

RegexOptions.MultiLine改变 '^' 和 '$' 字符的行为:

多行模式。更改 ^ 和 $ 的含义,使其分别匹配任何行的开头和结尾,而不仅仅是整个字符串的开头和结尾。

如果您一次将多行传递到您的正则表达式搜索中并且您希望将它们视为多行(即它们都以'^' 开头并以'$' 结尾),则多行非常有用。

我想你想尝试使用RegexOptions.SingleLine代替:

指定单行模式。更改点 (.) 的含义,使其匹配每个字符(而不是除 \n 之外的每个字符)。

如果您一次将多行传递到正则表达式搜索中,并且您希望将它们视为实际上都是单行,则 SingleLine 很有用。

于 2012-06-19T19:14:01.253 回答