标签: string-matching

Ruby中最好的字符串匹配算法和实现?

我有这两个字符串string1string2.什么是检查,如果我最好的选择string2是目前在string1.我如何在Ruby中实现.目前我正在使用Regex比赛.

ruby algorithm performance string-matching

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

查找文件中所有出现的字符串,并在Perl中打印其行号

我有一个包含400000行的大文件,每行包含许多由tab分隔的关键字.

我还有一个文件,其中包含要匹配的关键字列表.说这个文件充当查找.

因此,对于查找表中的每个关键字,我需要在给定文件中搜索它的所有匹配项.并且应该打印出现的行号.

我试过这个

#!usr/bin/perl
use strict;
use warnings;

my $linenum = 0;

print "Enter the file path of lookup table:";
my $filepath1 = <>;

print "Enter the file path that contains keywords :";
my $filepath2 = <>;

open( FILE1, "< $filepath1" );
open FILE2, "< $filepath2" ;

open OUT, ">", "SampleLineNum.txt";

while( $line = <FILE1> )
{
    while( <FILE2> ) 
    {
        $linenum = $., last if(/$line/);
    }
    print OUT "$linenum ";
}

close FILE1;
Run Code Online (Sandbox Code Playgroud)

这将首次出现关键字.但我需要所有的发生,并且关键字应该完全匹配.

完全匹配面临的问题是,例如我有关键字"hello"和"hello world"

如果我需要匹配"hello",它返回包含"hello world"的行号,我的脚本也只能匹配"hello"并给出它的行号.

perl line-numbers string-matching

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

emacs中匹配任意字符串的字符串匹配

在emacs lisp我只知道函数string-match[-p],但我不知道将文字字符串与字符串匹配的方法.

例如,假设我有一个由某个函数生成的字符串,并想知道另一个字符串是否包含它.在许多情况下,string-match-p将正常工作,但是当生成的字符串中包含正则表达式的语法,它会导致异常行为,甚至崩溃,如果包含正则表达式的语法是无效的(例如,不平衡报价括号\(,\)).

  1. 是emacs lisp中的某些函数,它是否与string-match-p正则表达式语法相似但不解释?
  2. 由于在CI中实现了正则表达式匹配,因此假设匹配正确的正则表达式比某些substring/ string=循环更快; 是否有一些方法可以将任意字符串转换为匹配该字符串且只匹配该字符串的正则表达式?

regex emacs elisp escaping string-matching

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

使用正则表达式匹配字符串的开头和结尾[Java]

我有一个文件夹中的文件列表:

maze1.in.txt
maze2.in.txt
maze3.in.txt
Run Code Online (Sandbox Code Playgroud)

我已经使用substring来删除.txt扩展名.如何使用正则表达式匹配文件名的正面和背面?我需要它来匹配前面的"迷宫"和后面的".in",中间必须是一个数字(可以是单个或两个数字).

我尝试了以下内容

if (name.matches("name\\din")) {
    //dosomething
}
Run Code Online (Sandbox Code Playgroud)

它与任何东西都不匹配.使用正确的正则表达式是什么?

java regex string-matching

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

如何使用javascript正则表达式从字符串中获取域

正如标题所示,我正在尝试使用javascript正则表达式从字符串中检索域.

请使用以下字符串:

String                                  ==>     Return
"google"                                ==>     null
"google.com"                            ==>     "google.com"
"www.google.com"                        ==>     "www.google.com"
"ftp://ftp.google.com"                  ==>     "ftp.google.com"
"http://www.google.com"                 ==>     "www.google.com"
"http://www.google.com/"                ==>     "www.google.com"
"https://www.google.com/"               ==>     "www.google.com"
"https://www.google.com.sg/"            ==>     "www.google.com.sg"
"https://www.google.com.sg/search/"     ==>     "www.google.com.sg"
"*://www.google.com.sg/search/"         ==>     "www.google.com.sg"
Run Code Online (Sandbox Code Playgroud)

我已经读过 "Regex找到没有www的域名 - Stack Overflow""从字符串中提取根域名 - Stack Overflow" 但它们太复杂了,所以我尝试编写自己的正则表达式:

var re = new RegExp("[\\w]+[\\.\\w]+");
/[\w]+[\.\w]+/
re.exec(document.URL);
Run Code Online (Sandbox Code Playgroud)

它工作正常"google.com","www.google.com""www.google.com.sg"而是返回http"http://google.com/","http://www.google.com/"

由于我是正则表达的新手,我似乎无法弄清楚出了什么问题......任何想法?

提前致谢!

javascript regex string string-matching capturing-group

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

匹配浮点数> = 100

我正在逐行读取一个文件,并希望得到的行以任何东西而不是AB开头,并且包含一个(至少)三位浮点数后跟一个百分号(即任何浮点数%大于或等于100%).

例如:

AA whatevs 102.342% dontcare #MATCH
AB whatevs 102.342% dontcare #MISMATCH
AC whatevs 12.3042% dontcare #MISMATCH *
AD whatevs 102% dontcare #MATCH *
AE whatevs 2002.3042% dontcare #MATCH
AF whatevs 22.3021% dontcare #MISMATCH
AG whatevs 102.342 12.342% dontcare #MISMATCH **
Run Code Online (Sandbox Code Playgroud)

到目前为止,我有以下正则表达式解决方案,它没有AD whatevs 102% dontcare明显的原因捕获.

/^(?!AB).*\d{3}\.\d*%/
Run Code Online (Sandbox Code Playgroud)

/^(?!AB).*\d{3}\.?\d*%/也不起作用,因为它匹配AF whatevs 22.3021% dontcare.

我知道我可以通过将我的正则表达式分成两个子正则表达式来实现它..但是,我想看看是否有一个正则表达式解决方案.

regex floating-point perl pattern-matching string-matching

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

为什么vim搜索比"cat fileName | grep targetText"慢得多?

我有一个名为test.txt的1.4 GB文本文件,我想在文件中搜索一个字符串.

我想知道为什么vim搜索(vim test.txt,然后键入/targetText搜索字符串)执行速度比cat test.txt | grep targetText

在我的机器上,vim搜索大约需要几分钟才能完成搜索,同时cat test.txt | grep targetText需要几秒钟才能完成搜索.

vim search string-matching

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

以下java脚本表达式的含义是什么

我正在浏览一段代码而且我遇到了这种语法

str.replace(re,function(raw, p1, p2, p3){
  if (!/\/\//.test(p1)) {  // <---- this one
    //some more code
  }
});
Run Code Online (Sandbox Code Playgroud)

我知道测试方法将一个字符串与另一个字符串匹配,并检查它是否存在.但这个正则表达式/\/\//匹配字符串是什么?我检查了正则表达式,然后

\/ matches the character / literally \/ matches the character / literally

做什么if(!//.test(p1))呢?

javascript regex string-matching

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

在一个Python数据帧/字典中搜索另一个数据帧中的模糊匹配

我有以下pandas数据框,包含50,000个唯一行和20列(包含相关列的片段):

df1:

            PRODUCT_ID           PRODUCT_DESCRIPTION
0           165985858958         "Fish Burger with Lettuce"
1           185965653252         "Chicken Salad with Dressing"
2           165958565556         "Pork and Honey Rissoles"
3           655262522233         "Cheese, Ham and Tomato Sandwich"
4           857485966653         "Coleslaw with Yoghurt Dressing"
5           524156285551         "Lemon and Raspberry Cheesecake"
Run Code Online (Sandbox Code Playgroud)

我还有以下数据框(我也以字典形式保存),它有2列和20,000个唯一行:

df2(也保存为dict_2)

       PROD_ID   PROD_DESCRIPTION
0      548576    "Fish Burger"
1      156956    "Chckn Salad w/Ranch Dressing"
2      257848    "Rissoles - Lamb & Rosemary"
3      298770    "Lemn C-cake"
4      651452    "Potato Salad with Bacon"
5      100256    "Cheese Cake - Lemon Raspberry …
Run Code Online (Sandbox Code Playgroud)

python string-matching python-2.7 pandas fuzzywuzzy

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

名称的近似字符串匹配算法

我正在寻找以下示例的模糊字符串算法:给定现有名称的数据库,如果匹配准确度高于输入阈值(比如90%),则将输入匹配到最匹配的名称,否则为NA

database = [James Bond, Michael Smith]
Run Code Online (Sandbox Code Playgroud)

输入

James L Bond->James Bond
JBondL->James Bond
Bond,James->James Bond
BandJamesk->James Bond
Jenny,Bond->N/A
Run Code Online (Sandbox Code Playgroud)

目前,大多数算法如Levenstein和基于语音的算法(如Soundex)都无法匹配像BondJames这样的倒置名称.到目前为止,余弦和提花产生了最好的结果,但我正在寻找更多,以便我可以选择最佳或可能组合的算法.

string algorithm string-matching fuzzy-comparison approximate

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