多行正则表达式问题
wolve 2007-11-12 04:55:02 要配置的内容如下:
{#ForeachBegin($Fields)}
private {$CLRType} {$LowerFieldName};
{#ForeachEnd}
public {$ModelClassName}({#ForeachBegin($Fields)}{$CLRType} {$LowerFieldName}{#ForeachEnd})
{
{#ForeachBegin($Fields[\r\n])}this.{$LowerFieldName} = {$LowerFieldName};{#ForeachEnd}
}
我写的正则表达式如下:
\{#ForeachBegin\(\$(?<items>[\w|\.]+\)}(?<itemTemplate>.+?)\{#ForeachEnd}
现在的问题是,如果使用不使用RegexOptions.Singleline选项,则
public {$ModelClassName}({#ForeachBegin($Fields)}{$CLRType} {$LowerFieldName}{#ForeachEnd})
{
{#ForeachBegin($Fields[\r\n])}this.{$LowerFieldName} = {$LowerFieldName};{#ForeachEnd}
}
能正确匹配,但是
{#ForeachBegin($Fields)}
private {$CLRType} {$LowerFieldName};
{#ForeachEnd}
无法匹配.
如果使用RegexOptions.Singleline选项,则匹配的结果为
{#ForeachBegin($Fields)}
private {$CLRType} {$LowerFieldName};
{#ForeachEnd}
public {$ModelClassName}({#ForeachBegin($Fields)}{$CLRType} {$LowerFieldName}{#ForeachEnd})
{
{#ForeachBegin($Fields[\r\n])}this.{$LowerFieldName} = {$LowerFieldName};{#ForeachEnd}
(注意这里没有"}")
也就是说他直接配置了全部内容,显示不是我希望得到的结果,我希望配置内容为3个
{#ForeachBegin($Fields)}
private {$CLRType} {$LowerFieldName};
{#ForeachEnd}
{#ForeachBegin($Fields)}{$CLRType} {$LowerFieldName}{#ForeachEnd}
{#ForeachBegin($Fields[\r\n])}this.{$LowerFieldName} = {$LowerFieldName};{#ForeachEnd}
参考.net说明,(?<itemTemplate>.+?)这里使用"+?"就是尽可能少的配置该项,但是没有效果.
请问到底怎么写才能满足要求,谢谢!