标签: string-matching

Ruby中的通配符字符串匹配

我想编写一个实用程序函数/模块,它将为字符串提供简单的通配符/ glob匹配.我没有使用正则表达式的原因是用户将最终使用某种配置文件提供匹配的模式.我找不到任何这样稳定的宝石 - 试过小丑,但是设置有问题.

我正在寻找的功能很简单.例如,给定以下模式,以下是匹配:

pattern | test-string         | match
========|=====================|====================
*hn     | john, johnny, hanna | true , false, false     # wildcard  , similar to /hn$/i
*hn*    | john, johnny, hanna | true , true , false     # like /hn/i
hn      | john, johnny, hanna | false, false, false     # /^hn$/i
*h*n*   | john, johnny, hanna | true , true , true
etc...
Run Code Online (Sandbox Code Playgroud)

我希望这样做尽可能高效.我考虑过从模式字符串创建正则表达式,但这在运行时似乎效率很低.有关此实施的任何建议吗?谢谢.

编辑:我正在使用ruby 1.8.7

ruby glob pattern-matching string-matching

10
推荐指数
1
解决办法
1万
查看次数

模糊文档匹配/文本指纹识别的最佳库

我正在考虑构建一个API,让程序提交学术出版物的"指纹",将其与Open Access期刊的文章数据库相匹配,如果找到,则向用户发送规范引文信息.最初这将是一个特定的小型研究领域,所以它不一定需要处理2000万篇论文才能获得成功(即使该领域最常引用的1000篇论文被覆盖,这对生产力来说也是一个巨大的好处和合作).

我想知道哪个库(理想情况下能与Ruby接口)最适合做这个"指纹识别".我已经看过Lucene的模糊匹配,但这似乎适用于单词级别,而在这种情况下,我们可能想要提交更大的文档子集.进行模糊匹配的原因是有些人可能有Word.doc预印本,有些人可能有最终的PDF等.

我真的很感激这里的一些想法.谷歌搜索"感性哈希"让我进入一堆新材料.我试着在这里总结一下我的许多发现.

看起来像SimHash,例如C实现将是要走的路,但我还需要进行更多实验.

ruby full-text-search fingerprint string-matching

10
推荐指数
1
解决办法
2349
查看次数

VB.NET'Like'操作符可能存在错误?

为什么以下评估为True

Dim result = "b" Like "*a*b"
Run Code Online (Sandbox Code Playgroud)

谢谢.

编辑:
为了概括这一点,以下返回True:

"String1" Like "*AnyText1*AnyText2*AnyText???******????*String1"
Run Code Online (Sandbox Code Playgroud)

VBA正常工作,返回False.
PowerShell正常工作,返回False:

PS C:\Users\XXX> "b" -Like "*a*b"
False
Run Code Online (Sandbox Code Playgroud)

EDIT2:
错误报告的链接:https:
//connect.microsoft.com/VisualStudio/feedback/details/748415/a-bug-in-net-like-operator

.net vb.net wildcard string-matching sql-like

10
推荐指数
1
解决办法
2153
查看次数

R:替换字符串中的外来字符

我正在处理大量数据,主要是非英文字符的名称.我的目标是将这些名称与在美国收集的一些信息相匹配.

也就是说,我可能希望将名称'Sølvsten'(从某些名称列表)与'Soelvsten'(存储在某些美国数据库中的名称)相匹配.这是我写的一个函数来做这件事.它显然很笨拙,有点随意,但我想知道是否有一个简单的R函数将这些外来字符转换为最近的英国邻居.我知道可能没有任何标准的方法来进行这种转换,但我只是好奇是否有转换可以通过R函数完成.

# a function to replace foreign characters
replaceforeignchars <- function(x)
{
    require(gsubfn);
    x <- gsub("š","s",x)
    x <- gsub("œ","oe",x)
    x <- gsub("ž","z",x)
    x <- gsub("ß","ss",x)
    x <- gsub("þ","y",x)
    x <- gsub("à","a",x)
    x <- gsub("á","a",x)
    x <- gsub("â","a",x)
    x <- gsub("ã","a",x)
    x <- gsub("ä","a",x)
    x <- gsub("å","a",x)
    x <- gsub("æ","ae",x)
    x <- gsub("ç","c",x)
    x <- gsub("è","e",x)
    x <- gsub("é","e",x)
    x <- gsub("ê","e",x)
    x <- gsub("ë","e",x)
    x <- gsub("ì","i",x)
    x <- gsub("í","i",x)
    x <- gsub("î","i",x)
    x <- gsub("ï","i",x)
    x <- gsub("ð","d",x) …
Run Code Online (Sandbox Code Playgroud)

r string-matching

10
推荐指数
3
解决办法
7349
查看次数

在JavaScript中测试两个字符串以实现完全匹配的最快方法

我想比较JavaScript中的两个字符串来测试它们是否完全相同.哪种方式最好(最快)?

现在,我正在考虑

if(string1.localeCompare(string2) == 0) {}
Run Code Online (Sandbox Code Playgroud)

或者干脆

if(string1 == string2)
Run Code Online (Sandbox Code Playgroud)

有更好的方法吗?

javascript string-matching

10
推荐指数
2
解决办法
4万
查看次数

9
推荐指数
2
解决办法
1万
查看次数

JavaScript正则表达式 - 两个[az]后跟三个[0-9]

我有一个简单的正则表达式:

[A-z]{2}[0-9]{3})$/g 在以下内容中:

regForm.submit(function(){
  if ($.trim($('#new-usr').val()).match(/([A-z]{2}[0-9]{3})$/g)) {
    alert('No');
    return false;
  }
});
Run Code Online (Sandbox Code Playgroud)

这是正确阅读的东西,如'ab123'提供警报,'ab1234'但没有.但是,'abc123'仍在抛出警报.我需要它,所以当它只有2个字母后跟三个数字时才会发出警报.

javascript regex string string-matching

9
推荐指数
2
解决办法
2万
查看次数

匹配后删除到行尾,保持行不匹配

我有一个以下形式的文件:

interesting text-MIB blah blah blah
VERY INTERESTING TEXT
interesting text-MIB blah blah blah
Run Code Online (Sandbox Code Playgroud)

在包含"-MIB"字符串的每一行中,我想删除该字符串后面的文本,直到该行的结尾.

以下命令似乎按预期工作:

sed -i -n -e 's/-MIB.*$/-MIB/p' ./myfile
Run Code Online (Sandbox Code Playgroud)

我的问题是它还删除了找不到我的模式的行.这里,"非常有趣的文字"这一行将被删除.我对sed并不熟悉.我究竟做错了什么?是否适合这种治疗方法?

sed line string-matching

9
推荐指数
2
解决办法
4万
查看次数

检查字符串是否以Emacs Lisp中的后缀结尾

是否有一个函数检查字符串是否以某个子字符串结尾?Python有endswith:

>>> "victory".endswith("tory")
True
Run Code Online (Sandbox Code Playgroud)

string emacs elisp substring string-matching

9
推荐指数
2
解决办法
2536
查看次数

使用模糊逻辑连接两个数据集

我正在尝试在两个数据集之间的R中进行模糊逻辑联接:

  • 第一个数据集具有位置名称和称为 config
  • 第二个数据集具有一个位置的名称和两个附加属性,在将它们加入第一个数据集之前需要对其进行汇总。

我想使用该name列在两个数据集之间进行联接。但是,该name列在数据集中可能包含其他字符或前导字符,或者在较大的单词内部包含一个单词。因此,例如,如果我们查看这两个数据集,我希望名称OPAL加入OPALAS,而SAUSALITO Y加入SAUSALITO。

Dataset1:    
     Name           Config
     ALTO D         BB
     CONTRA         ST
     EIGHT A        DD
     OPALAS         BB
     SAUSALITO Y    AA
     SOLANO J       ST

Dataset2:    
    Name       Age     Rank
    ALTO D     50      2
    ALTO D     20      6
    CONTRA     10      10
    CONTRA     15      15
    EIGHTH     18      21
    OPAL       19      4
    SAUSALITO  2       12
    SOLANO     34      43
Run Code Online (Sandbox Code Playgroud)

数据集2汇总代码

Data2a <- summaryBy(Age ~ Name,FUN=c(mean), data=Data2,na.rm=TRUE)
Data2b <- summaryBy(Rank ~ Name,FUN=c(sum), data=Data2,na.rm=TRUE)
Data2 <- data.frame(Data2a$Name, Data2a$Age.mean, Data2b$Rank.sum)

Desired Outcome:
    Name …
Run Code Online (Sandbox Code Playgroud)

join r string-matching fuzzy-logic fuzzy-comparison

9
推荐指数
1
解决办法
3704
查看次数