2

私はこれを持っています:

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

ただし、文字列が 1 行にある場合にのみ機能します。

例えば:

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 は、一度に複数の行を正規表現検索に渡し、実際にはすべて 1 行であると見なして扱いたい場合に便利です。

于 2012-06-19T19:14:01.253 に答える