在降价文本中进行纯文本搜索

问题描述:

我正在尝试编写可以在降价文件中搜索任何纯文本单词或短语的代码(用C#编写)。目前我正在通过一个冗长的方法来做到这一点:将markdown转换为HTML,将HTML元素标签从HTML文本中除去,然后使用简单的正则表达式来搜索相关单词/短语。不用说,这可能会很慢。在降价文本中进行纯文本搜索

一个具体的例子可能会显示问题。说降价文件包含通过提供搜索短语something significant(即忽略***的)

Something ***significant***

我希望能够找到。

是否有这样做的有效方式(即避免转换为HTML),并且不涉及我编写自己的降价解析器?

编辑: 我想要一种通用的方式来搜索任何包含任何有效降价格式的降价文本中的文本或短语。第一个答案是匹配我给出的特定文本示例的方法。

编辑: 我应该清楚:这需要一个简单的面向用户的搜索和降价文件可以包含任何有效的降价格式。出于这个原因,我需要能够忽略标记中的任何内容,如果用户将标记转换为HTML,则用户不会将其视为文本。例如。指定图像的降价文本(例如![Valid XHTML](http://w3.org/Icons/valid-xhtml10).应在搜索过程中跳过)。转换为HTML会为用户带来不错的结果,因为它能够合理准确地反映用户所看到的内容(但这只是一个缓慢的解决方案,尤其是当需要查看大量降价文本时)。

+2

我可能是错的,但我从你的问题得到的印象是,这是一个一些可能的例子。鉴于你收到的所有答案似乎都是特例,这可能有助于增加一些。 – 2014-10-02 09:01:19

+0

显示您当前的代码将有很大帮助,例如回答:单词是否应该按照搜索顺序进行回答?在单词之间是否可以有其他单词,以及允许哪些空格?不会简单的重复'IndexOf()'工作吗?你确定你想重新发明搜索引擎吗? – CodeCaster 2014-10-02 10:07:19

+0

@MatthewHaugen你说的很对,我编辑了这个问题来强调这一点。 – Ben 2014-10-02 10:10:03

使用正规

var str = "Something ***significant***"; 
var regexp = new Regex("Something.+significant.+"); 
Console.WriteLine(regexp.Match(str).Success); 
+0

这只会解决一个非常具体的*示例*。 – Ben 2014-10-02 10:14:58

+0

我没有你想匹配所有的东西名单,我根据你的榜样,只是一个foreach(在whatevetever_collection_you_want_to_use VAR whatever_you_want_to_match){VAR新的正则表达式(whatever_you_want_to_match)内更换; – dariogriffo 2014-10-02 11:01:17

+0

是的,我可能必须这样做。我希望不必写很多(或单一非常复杂)的正则表达式模式来去掉所有的各种降价的文本,用户就不会“看”,如果他们观看它转换为HTML, – Ben 2014-10-02 15:37:59

试试这个:

string input = "Something ***significant***"; 
string v = input.Replace("***", ""); 
Console.WriteLine(v) 

看看这个例子:enter link description here

+0

降价是一种标记支持更多标记符号的语言,而不仅仅是'***'。更换一个不会帮助。 – CodeCaster 2014-10-02 10:03:52