问题标签 [string-search]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
389 浏览

ios - 如何仅将文本中的选定字符串与objective-c中的给定输入进行比较

我知道这个问题听起来很老套。我找不到更好的表达方式,所以我会花时间解释我正在努力解决的问题。

我有一个从用户那里获取输入的 iPhone 应用程序。我有一个 plist(我将很快将其转换为在线数据库)我目前正在做的是这个。我将输入字符串与 plist 中项目的成分部分进行比较。

这是 plist 格式

我将输入与recipeIngredients进行比较。但是我的代码所做的不是我需要的。如果比较为真,我只会列出我的plist中包含输入成分的每个项目。我可以过滤选定的食谱,但我想要的是:除非与输入和成分完全匹配,否则我不想展示它。

问题是这样的。我的食谱配料是这样的:1 勺糖、1 勺盐、100 克鸡肉。

用户输入诸如盐、糖之类的输入。鸡肉,所以我无法完全比较它。它永远不会相同,所以我不能展示任何东西。

我怎样才能做到这一点。

我愿意接受任何建议。

这就是我比较的方式

searchText 是我的输入。

0 投票
1 回答
497 浏览

c# - C#正则表达式在两对不同的字符串之间查找字符串

使用 C# RegEx,我试图找到由两个不同的单词对包围的文本,比如 start1....end1 和 start2...end2。在下面的示例中,我想获得:text1、text2、text11、text22。

mt.Groups[1].Value在上面的代码中正确显示 text1,如果模式是 text11,@"start1(.*?)end1|start2(.*?)end2"但它显示 text2 和 text22 的空字符串。另一方面,如果我将模式中的顺序更改为@"start2(.*?)end2|start1(.*?)end1",它会正确显示 text2、text22,但会显示 text1 和 text11 的空字符串。我的代码需要改变什么?这篇MSDN 文章解释了有关组何时返回空字符串但我仍然没有得到所需结果的一些信息。

0 投票
0 回答
1494 浏览

c - Boyer-Moore 算法

我正在尝试在 C 中实现 Boyer-Moore 算法以在 .pcap 文件中搜索特定单词。我从http://ideone.com/FhJok5引用了代码。我正在使用此代码。

只是我将数据包作为字符串传递,并将我正在搜索的关键字传递给其中的函数 search()。当我运行我的代码时,它每次都会给出不同的值。有时它也给出了正确的值。但大多数时候它没有识别一些值。

我从 Naive Algo Implementation 获得了结果。结果总是完美的。

我在 VMware 10.0.1 上使用 Ubuntu 12.0.4。语言:C

我的问题是每次都必须给出相同的结果,对吗?不管是对是错。每次我在相同的输入上运行文件时,此输出都会不断变化;并且在几次运行期间,它也给出了正确的答案。大多数情况下,该值在 3 或 4 个值之间变化。

到目前为止我所做的调试:

  1. 每次都传递字符串而不是数据包,它的工作完美且每次都具有相同和正确的值。
  2. 检查 pcap 部分,我可以看到所有数据包都被传递给函数(我通过打印数据包帧号来检查)。
  3. 我发送给 Naive Algo 代码的相同数据包,它提供了完美的代码。

请给我一些想法,可能是什么问题。我怀疑内存管理有问题。但如何找到哪一个?

提前致谢。

0 投票
1 回答
1142 浏览

linq - 使用“包含”时忽略 LINQ 中的锐音

是否可以在纯 LINQ-to-entities 中使用 String 的 Contains() 方法而不考虑锐度?

例子:

我想要这个查询:

不仅返回给我第一条消息,而且还返回第二条消息。

如果这不是正确的方法(包含),那是哪一种?

我正在使用 SQL Server。

此外,这里有一个类似但不同的问题: 忽略字符串比较中的重音字母

这是不同的,因为他正在尝试比较两个字符串(“Equals”或“CompareTo”),......而我正在尝试使用“Contains”

0 投票
4 回答
21161 浏览

excel - 创建宏以在工作表中搜索字符串列表并突出显示该行

有人可以帮我创建一个宏,该宏将在 Excel 工作表中搜索 30 个字符串(例如 , )的列表SV-32488r1并在找到时SV-33485r1突出显示Row

  • 我正在使用 Office 2010。
  • 我不是 Excel 或 VBA 专家,所以我不知道从哪里开始。
  • 我发现的搜索只允许我搜索一个字符串。

非常感谢你。

0 投票
1 回答
51 浏览

regex - 用于两组文字之间任何时间任何字符的正则表达式

嗨,我是正则表达式和编程的新手。我在一个文本文件中想要搜索两个文字的第一次出现之间的任何东西(所有字符),即'html'和'http'。我尝试了很多表达,但没有成功。任何帮助将不胜感激。

0 投票
1 回答
558 浏览

c++ - 理解 Baeza-Yates Régnier 算法(多字符串匹配,从 Boyer-Moore 扩展)

首先,如果我写了很多,请原谅,我试图总结我的研究,以便每个人都能理解。

R. Baeza-Yates 和 M. Regnier 在 1990 年发表了一种新算法,用于在二维 n n 文本中搜索二维 m m 模式。该出版物写得很好,对于像我这样的新手来说很容易理解,算法是用伪代码描述的,我能够成功地实现它。

BYR 算法的一部分需要 Aho-Corasick 算法。这允许在字符串文本中搜索多个关键字的出现。但是,他们也表示,他们算法的这一部分可以通过使用 Aho-Corasick 而不是使用 Commentz-Walter 算法(基于 Boyer-Moore 而不是 Knuth-Morris-Pratt 算法)得到很大改进。他们唤起了他们自己开发的 Commentz-Walter 算法的替代方案。这在他们之前的出版物中进行了描述和解释(参见第 4 章)。

这就是我的问题所在。正如我所说,该算法会遍历文本并检查它是否包含关键字集中的单词。单词被颠倒排列并放置在一棵树上。为了提高效率,当他知道没有找到匹配项时,有时需要跳过一些字母。

特里

要确定可以跳过的字符数,必须计算两个表d和。dd那么,算法就很简单了:

该算法的工作原理如下:

  • 我们将 trie 的根与文本中的位置 m 对齐,然后按照 trie 中的相应路径从右到左开始匹配文本。
  • 如果找到匹配项(最终节点),我们输出相应字符串的索引。
  • 在匹配或不匹配之后,我们使用与当前节点关联的最大移位(意味着 dd)和 d[x] 的值,将 trie 在文本中进一步移动,其中 x 是文本中对应于特里的根。
  • 在新位置从右到左再次开始匹配 trie。

我的问题是我不知道如何计算dd函数。在他们的出版物中,R. Baeza-Yates 和 M. Regnier 提出了一个正式的定义:

dd 函数

pi 是一组关键字中的一个单词,j 是这个单词中一个字母的索引,所以 pi[j] 就像我之前展示的 trie 中的一个节点。节点中的数字表示 dd(node)。L 是单词数,mi 是单词 pi 中的字母数。

他们没有给出关于这个函数的构造的任何指示。他们只推荐观看W. Rytter 的作品。本文档构建了一个类似于预期的函数,不同之处在于在这种情况下,只有一个关键字而不是一组。

dd(这里称为 D)的定义如下:

D 功能

可能会注意到与先前定义的相似之处,但我并不了解所有内容。

论文中给出了构造这个函数的伪代码,我已经实现了,这里是用 C++ 编写的:

它有效,但我不知道如何将它扩展为几个词,我不知道如何与ddBaeza-Yates 和 Régnier 给出的正式定义相吻合。我说这两个定义是相似的,但我不知道到什么程度。

我没有找到关于他们算法的任何其他信息,我不可能知道如何实现 的构造dd,但我正在寻找可能理解并告诉我如何到达那里的人,向我解释定义之间的联系Ddd。_

0 投票
0 回答
34 浏览

ios - 如何检查 NSString 中的一个单词是否以某个字符串开头?

给定字符串This is just an example string to show what I mean.

如何检查此字符串中的任何单词都不是以 开头amp,或者一个(或多个)单词以 开头s

这是 iOS 联系人应用程序在列表中搜索时所做的事情:它检查名字或姓氏是否以给定的搜索字符串开头。

应该是重复的帖子没有回答我的问题;它只是关于使用正则表达式的一般项目。

0 投票
1 回答
628 浏览

java - 在大海捞针中找到多根针 - 字符串搜索

问题:如何从具有亚线性性能的文档中查找内容主体中是否存在字符串,以及必须按顺序或与其相关联的 id 而不是字母顺序来查找字符串的位置。

最好我们会在 PHP 和/或 JAVA 中解决这个问题

trie 或 Knuth-Pratt-Morris 或 boyer-moore 实现或其他类似算法能否帮助在亚线性时间内找到这些匹配项,如果可以,你能告诉我如何。

更多细节

列表长度可能是数百万行。每个字符串可以包含字符 (a-z0-9) 和空格,即“堆栈溢出”、“堆栈溢出” 每个字符串都有一个唯一标识符 (id),它是一个整数。{"s":"stackoverflow", "#":"920001"} 匹配或找到的字符串应按其唯一标识符的顺序查找。也值得注意。字符串列表不会经常更改。内容可以。

*例子

一个字符串数组(920001 个唯一字符串)和 2 个文档示例。在内容中检查我们列表中的存在字符串。继续查找匹配项,直到找到 3 个字符串或列表用完为止。当在内容中找到字符串时,新数组中的字符串匹配[]

如您所见,字符串“stackoverflow”在列表末尾很长,但在示例 2 中,我们只会匹配字符串,其中一个是 stackoverflow,使用简单的循环和匹配将花费相当多的时间来匹配的字符串数组。

为此,请将下面的列表视为有 920001 行,并且 12 到 920000 之间的行中的字符串不包含任何匹配项。

** 示例列表

** 内容示例

这就是我所看到的问题。

0 投票
4 回答
51481 浏览

string - golang中不区分大小写的字符串搜索

如何以不区分大小写的方式在文件中搜索单词?

例如

如果我在UpdaTe文件中搜索,如果文件包含更新,则搜索应该选择它并将其计为匹配项。