WEB开发网
开发学院数据库MSSQL Server SQL Server 2005: 正则表达式使模式匹配和数据提取... 阅读

SQL Server 2005: 正则表达式使模式匹配和数据提取变得更容易

 2009-02-10 10:20:07 来源:WEB开发网   
核心提示: 图 2 中的代码表示枚举器,跟踪各个匹配在返回的匹配集中的位置时,SQL Server 2005: 正则表达式使模式匹配和数据提取变得更容易(7),MatchNode 类在字符串中封装各个匹配,MatchIterator 类是可枚举的,FillRowMethodName 被设置为调用返回可

图 2 中的代码表示枚举器。跟踪各个匹配在返回的匹配集中的位置时,MatchNode 类在字符串中封装各个匹配。MatchIterator 类是可枚举的,它还处理正则表达式处理过程。它使用新生成的关键字来创建比早期版本的框架更方便的枚举器。它将按需返回在输入字符串中检测到的各个匹配项。

SQL Server 2005: 正则表达式使模式匹配和数据提取变得更容易Figure2匹配的自定义可枚举对象

internal class MatchNode
{
  private int _index;
  public int Index { get{ return _index; } }
  private string _value;
  public string Value { get { return _value; } }
  
  public MatchNode( int index, string value )
  {
    _index = index;
    _value = value;
  }
}
internal class MatchIterator : IEnumerable
{
  private Regex _regex;
  private string _input;
  public MatchIterator( string input, string pattern )
  {
    _regex = new Regex( pattern, UserDefinedFunctions.Options );
    _input = input;
  }
  public IEnumerator GetEnumerator()
  {
    int index = 0;
    Match current = null;
    do
    {
      current = (current == null) ?
        _regex.Match( _input ) : current.NextMatch( );
      if (current.Success)
      {
        yield return new MatchNode( ++index, current.Value );
      }
    }
    while (current.Success);
  }
}

图 3 中的代码定义了表值 CLR UDF。RegexMatches 方法返回一个新的 MatchIterator。RegexMatches 方法中的 SqlFunctionAttribute 还包括某些其他属性。TableDefinition 属性被设置为函数的表定义。FillRowMethodName 被设置为调用返回可枚举对象的每个迭代的方法名称。在此情况下,该方法为 FillMatchRow。

上一页  2 3 4 5 6 7 8 9 10  下一页

Tags:SQL Server 正则

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接