`

tango.text.Search 翻译

阅读更多

tango.text.Search

License:

BSD style: see license.txt

Version:

May 2009: Initial release

since:

0.99.9

Author:

Kris

FindFruct!(T) find(T)(T[] what) #
返回一个轻量级的模式匹配器,有利于短模式和/或短到中等长度的内容。粗略近似(Brute-force)快速多字节比较方法。
SearchFruct!(T) search(T)(T[] what) #
 返回一个次中量级(welterweight)模式匹配器,有利于升的模式和/或较宽泛的内容。基于QS算法,该算法是一种Boyer-Moore变种。不为字母分配内存。
  通常比匹配长度变得更快。
struct FindFruct(T) #
轻理级find实用的方便包装,没有IFTI问题的困扰。创建他们中的一个用find()

函数:

1
2
3
4
5
6
7
8
9
auto match = find ("foo");
auto content = "wumpus foo bar"

// search in the forward direction
auto index = match.forward (content);
assert (index is 7);

// search again - returns length when no match found
assert (match.forward(content, index+1) is content.length);

搜索操作包括向前和向后,和一个任选的开始偏移量(可能比切割内容更方便)。有些方法替换给定内容的匹配,和别的返回穿越内容的foreach()迭代器。

SearchFruct是一个更精细(sophisticated)的变体,在对更长和/或更广泛的内容的操作更有效。

size_t forward(T[] content, size_t ofs = 0) #
向前搜索给定内容,从任选的索引开始。
返回匹配的索引,如果没有找到匹配则返回content.length
size_t reverse(T[] content, size_t ofs = size_t.max) #
向后搜索给定内容,从任选的索引开始。
返回匹配的索引,如果没有找到匹配则返回content.length
T[] match() #
返回匹配文字。
void match(T[] what) #
重新设置要匹配的文字。
bool within(T[] content) #
如果在给定内容中存在匹配就返回true
size_t count(T[] content) #
返回给定内容中匹配的数量。
T[] replace(T[] content, T chr) #
用给定字符替换所有匹配。要避免堆活动使用方法tokens()
返回一个替换后的内容的副本。
T[] replace(T[] content, T[] sub = null) #
用给定子串替换所有匹配。要避免堆活动使用方法tokens()
返回一个替换后的内容的副本。
Util.PatternFruct!(T) tokens(T[] content, T[] sub = null) #
返回一个foreach()迭代器,揭示所有给定内容中匹配的文字片段。替换文字(Substitution text)也注入每个匹配的地方,null用于指明要移除代替:
1
2
3
4
5
6
char[] result;

auto match = find ("foo");
foreach (token; match.tokens ("$foo&&foo*", "bar"))
         result ~= token;
assert (result == "$bar&&bar*");
该机制避免内部堆活动。
Indices indices(T[] content) #
返回一个foreach()迭代器揭示给定内容中所有匹配的索引(Indices):
1
2
3
4
5
6
int count;

auto f = find ("foo");
foreach (index; f.indices("$foo&&foo*"))
         ++count;
assert (count is 2);
struct Indices [private] #
简单的 foreach() 迭代器。
struct SearchFruct(T) #
次中量级search应用的方便包装,没有IFTI问题的困扰。创建它们的一个用search()

函数:

1
2
3
4
5
6
7
8
9
auto match = search ("foo");
auto content = "wumpus foo bar"

// search in the forward direction
auto index = match.forward (content);
assert (index is 7);

// search again - returns length when no match found
assert (match.forward(content, index+1) is content.length);

搜索操作包括向前和向后,和一个任选的开始偏移量(可能比切割内容更方便)。有些方法替换给定内容的匹配,和别的返回穿越内容的foreach()迭代器。

FindFruct是一个更简单的变体,它可对短匹配和/或短内容更有效地操作(使用粗略相似策略brute-force )。

SearchFruct opCall(T[] what) [static] #
构造 fruct
T[] match() #
返回匹配文字。
void match(T[] what) #
重设文字以匹配。
size_t forward(T[] content, size_t ofs = 0) #
向前搜索给定内容,从任选的索引开始。
返回匹配地方的索引,没有找到匹配则返回content.length
size_t reverse(T[] content, size_t ofs = size_t.max) #
向后搜索给定内容,从任选的索引开始。
返回匹配地方的索引,没有找到匹配则返回content.length
bool within(T[] content) #
如果在给定内容中存在匹配就返回true
size_t count(T[] content) #
返回给定内容中匹配的数目。
T[] replace(T[] content, T chr) #
用给定字符替换抽有匹配的地方。要避免堆活动就用 tokens()
返回替换后内容的一个副本。
T[] replace(T[] content, T[] sub = null) #
用给定子串替换所有匹配的地方。要避免堆活动就用 tokens()
返回替换后内容的一个副本。
Substitute tokens(T[] content, T[] sub = null) #
返回一个foreach()迭代器,揭示所有给定内容中匹配的文字片段。替换文字(Substitution text)也注入每个匹配的地方,null用于指明要移除代替:
1
2
3
4
5
6
char[] result;

auto match = search ("foo");
foreach (token; match.tokens("$foo&&foo*", "bar"))
         result ~= token;
assert (result == "$bar&&bar*");
这个机制避免内部堆活动。
Indices indices(T[] content) #

 

返回一个foreach()迭代器揭示给定内容中所有匹配的索引(Indices):
1
2
3
4
5
6
int count;

auto match = search ("foo");
foreach (index; match.indices("$foo&&foo*"))
         ++count;
assert (count is 2);
size_t find(char* what, size_t wlen, char* content, size_t len, size_t ofs) [private] #
size_t rfind(char* what, size_t wlen, char* content, size_t len, size_t ofs) [private] #
bool matches(char* a, char* b, size_t length) [private, static] #
void reset() [private] #
构建查询表。我们强制字母表总是成为char[],考虑宽字符用更长模式代替。
void flip() [private] #
颠倒查询表方向。
struct Indices [private] #
简单的foreach() 迭代器。
struct Substitute [private] #
替代foreach()迭代器。

Copyright (c) 2009 Kris Bell. All rights reserved :: Generated by dil on Fri Jul 17 18:19:35 2009. Rendered by kandil.

分享到:
评论

相关推荐

    tango-controls.pdf

    Tango Control System是一种用于控制和监控实验室仪器、望远镜、粒子加速器等复杂设备的控制系统。该系统被广泛应用于科研与工业领域,特别是在物联网及系统集成方面扮演着重要角色。 在搭建Tango Control System时...

    Windows安装TANGO教程.docx

    ### Windows安装TANGO教程知识点详解 #### 一、前言 本教程旨在详细介绍如何在Windows 10操作系统上搭建TANGO环境。TANGO是一种广泛应用于分布式控制系统的框架,尤其适用于科学仪器与工业自动化领域的应用。本文将...

    TangoTagger:Clojure 库,用于根据来自 tango.info 网站的数据自动标记探戈歌曲

    探戈标签Clojure 库,用于根据来自 tango.info 网站的数据自动标记探戈歌曲。执照版权所有 :copyright: 2014 Bruno Alfirević 根据 Eclipse 公共许可证分发 1.0 版或(由您选择)任何更高版本。

    谈客视频电话 Tango v3.13.128111

    谈客视频电话 Tango v3.13.128111 更新时间:2015-01-14 版本:3.13.128111 软件语言:多语言 软件类别:网络语音 软件大小:26.18 MB 适用固件:2.1及更高固件 内置广告:没有广告 适用平台:Android Tango为您...

    Tango视频电话 v3.13.127894

    Tango视频电话3.13.127894 Tango Video Calls 大小:26.18MB 更新时间:2015-01-12 Tango为您带来免费的高品质视频通话,在3G和Wi-Fi网络上都运行如飞!全世界数百万用户都在使用妙趣横生又简单易用的Tango视频...

    tango, 微型&可以插入网络框架.zip

    tango, 微型&可以插入网络框架 Tango 软件包探戈是一个微型&可以插入的网页框架。当前版本:v0.5.0 版本的历史记录。正在启动要安装 Tango:go get github.com/lunny/tango

    Python库 | tango-articles-0.12.1.tar.gz

    processed_text = tango_articles.preprocessing(text) # 提取文章内容 summary = tango_articles.content_extraction(article_html) # 获取关键词 keywords = tango_articles.keyword_extraction(text) ``` 四、...

    PyPI 官网下载 | django-tango-0.3.1.tar.gz

    标题"PyPI 官网下载 | django-tango-0.3.1.tar.gz"表明这是一个从Python Package Index (PyPI)官方源下载的软件包,名为"django-tango",版本号为0.3.1,其格式是tar.gz。PyPI是Python社区中最主要的第三方软件库...

    Python库 | tango-comments-0.4.3.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:tango-comments-0.4.3.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    tango-colors:探戈颜色定义用于python,乳胶和其他..

    如果要在乳胶文档中使用这些探戈颜色,请将tango.sty放在某个可以找到乳胶的地方。 例如,在texmf目录中。 Python 您有两种使用颜色的方法。 如果只需要HTML模型,则可以导入TANGO_HTML_COLORS ,这是探戈颜色的...

    authz:移动了https

    身份验证 authz是的授权中间件,它基于 。 安装 ...简单的例子 package main import ( ... tg := tango .... HandlerFunc ( func ( ctx * tango. Context ) { sess := sessions . Session ( ctx . Req ()

    Tango-D2:Tango库到D2的端口

    现在,这意味着基本上所有用户模块(tango.math.BigNum除外,别名为std.bigint,直到另行通知)和大多数tango.core模块都已移植。 doc / examples文件夹中的示例也应该起作用。 我在Linux上进行移植,因此这是经过...

    TangoSDK_Eisa_Unity5.unitypackage

    TangoSDK_Eisa_Unity5.unitypackage

    tango风格的XP主题

    “TANGO的最爱”可能意味着这个主题是对Tango设计风格的一种致敬或特别优化,是Tango风格的忠实体现,因此深受Tango风格爱好者的喜欢。 【标签解析】 “tango”标签直接关联了设计风格,指明了主题的视觉特征。...

    flume-redis:Flume-Redis添加了源和接收器功能以支持Apache Flume中的Redis

    agent.sources.redisSource.type = com.tango.logstash.flume.redis.source.RedisSource agent.sources.redisSource.host = localhost agent.sources.redisSource.key = logstash agent.sources.redisSource.batch_...

    电路设计软件tango

    《Tango:电路设计软件的历史与应用》 Tango,这款被誉为古老的电路板设计软件,是电子工程领域中的一颗璀璨明星。它以其强大的功能和在DOS操作系统下的独特运行方式,为电路设计者提供了丰富的工具,使得在早期的...

    TANGO电路原理图库文件的数据结构分析.pdf

    TANGO电路原理图库文件的数据结构分析 引言: TANGO软件是一个广泛使用的绘图软件,在我国尤其流行。它能绘制电路原理图和印刷电路板图,其数据文件的结构在相关文献中有介绍,但关于库文件的数据结构信息却很少。...

    TangoSdk For Unity

    Tango SDK---The latest version of the Unity SDK is Ikariotikos (Version 1.54, June 2017).

    manual-zh-CN:Tango使用指南 Moved to https

    Tango Tango 是一个微内核易扩展的Go语言Web框架,他兼有Beego的效率和Martini的中间件设计。 最近更新 ... tango.JSON } func (Action) Get() interface{} { if true { return map[string]string{

    Project Tango: An Overview

    ### Project Tango: 一个概述 #### 1.0 引言 本文档旨在提供关于Project Tango的概览。Project Tango是Sun Microsystems推出的一个开源实现,它涵盖了关键的企业Web服务规范(通常称为WS-*),并提供了与.NET 3.0...

Global site tag (gtag.js) - Google Analytics