标签: matching

提高我的正则表达能力

我一直想要提高我的正则表达技能已经有一段时间了,而且"掌握正则表达式"被推荐了很多次,所以我买了它并且在过去一天左右阅读它.

我创建了以下正则表达式:

^(?:<b>)?(?:^<i>)?<a href="/site\.php\?id=([0-9]*)">(.*?) \(([ a-z0-9]{2,10})\)</a>(?:^</i>)?(?:</b>)?$
Run Code Online (Sandbox Code Playgroud)

哪个匹配前两个链接但忽略<i>标记所包含的两个链接.它提取id,标题和类型.

<a href="/site.php?id=6321">site 1 title (type 1)</a>
<b><a href="/site.php?id=10254">site 2 title (type 2)</a></b>

<i><a href="/site.php?id=5479">site 3 title (type 3)</a></i>
<b><i><a href="/site.php?id=325">site 4 title (type 4)</a></i></b>
Run Code Online (Sandbox Code Playgroud)

虽然它有效,但对于这么简单的东西来说似乎相当长,可以改进吗?

html regex matching

0
推荐指数
1
解决办法
375
查看次数

如何从Perl正则表达式中仅抓取一个捕获?

除了执行以下操作之外,是否有更简单的方法从匹配中仅抓取一个元素:

my $date = ($xml_file =~ m/(\d+)-sys_char/)[0];
# or
my $date = $1 if $xml_file =~ /(\d+)-sys_char/;
Run Code Online (Sandbox Code Playgroud)

是否有一个标志来指定m不返回数组但只是一个$#匹配的连接值,所以我可以这样做:?

my $date = ($xml_file =~ mSOMEOPT/(\d+)-sys_char/);
Run Code Online (Sandbox Code Playgroud)

从最后删除0?

regex perl matching

0
推荐指数
1
解决办法
122
查看次数

字符串部分匹配

可能重复:
Java中的相似性字符串比较

大家好

我试图使用Java找到两个字符串之间的部分匹配,当然,stackoverflow上有很多问题和答案,但是,这些都不符合我的要求.我有两个字符串(句子),例如,"强大的java编程"和"强大的编程技巧".现在我想测量这两个句子之间的相似程度,如25%,而不仅仅是部分匹配 = turefalse.

谢谢

java string matching partial

0
推荐指数
1
解决办法
5837
查看次数

Java Method.getName()与string不匹配

我已经用几种不同的方法对它进行了测试.我比较的字符串s与日志文件中显示的字符串完全相同.撇号是为了确保没有空格.有谁知道发生了什么?

import java.lang.reflect.Method;
import android.util.Log;

public class Button {
    public Button () {
        for(Method m1:MyOtherClass.class.getMethods()) {
        String s = m1.getName();
            if(s == "Update") {
                Log.i("result","true");
            }
            Log.i("test", "'" + s + "'");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

java methods matching

0
推荐指数
1
解决办法
1504
查看次数

Haskell:与列表匹配的模式

我正在尝试创建一个列表中的函数,如果其中一个元素为负数,那么该列表中与其正对应元素相等的任何元素都应该更改为0.例如,如果有一个-2在列表中,该列表中的所有2都应更改为0.

任何想法为什么它只适用于某些情况而不适用于其他情况?我不明白为什么会这样,我已经好几次看过了.

changeToZero [] = []
changeToZero [x] = [x]
changeToZero (x:zs:y:ws) | (x < 0) && ((-1)*(x) == y) = x : zs : 0 : changeToZero ws
changeToZero (x:xs) = x : changeToZero xs
Run Code Online (Sandbox Code Playgroud)

*Main> changeToZero [-1,1,-2,2,-3,3]

[-1,1,-2,2,-3,3]

*主要> changeToZero [-2,1,2,3]

[-2,1,0,3]

*主要> changeToZero [-2,1,2,3,2]

[-2,1,0,3,2]

*Main> changeToZero [1,-2,2,2,1]

[1,-2,2,0,1]

haskell design-patterns function list matching

0
推荐指数
1
解决办法
906
查看次数

将ORB功能与阈值匹配

我的项目是基于android的草药识别.我使用ORB来获取关键点,功能和匹配功能.

我想用这个算法:

  1. 我使用4参考图像,并将它们的特征image1匹配到图像1,1-2,1-3,1-4,2-3,3,4.
  2. 然后我将最小和最大距离存储到数据库作为阈值.(最小阈值=总最小值/ 6)
  3. 当我识别出新图像时,我将新的最小和最大距离与数据库进行比较.但我不知道该怎么做.

{

for (j=MinID; j<=MaxID; j++){
                        MatOfDMatch matches = DetectUtility.match(features, matFromJson(DB.GetORBFitur(j)));
                        List<DMatch> matchesList = matches.toList();
                        Double max_dist = 0.0;
                        Double min_dist = 100.0;
                        for (int i = 0; i < matchesList.size(); i++){
                            Double dist = (double) matchesList.get(i).distance;
                            if (dist < min_dist && dist != 0){
                                min_dist = dist;
                            }
                            if (dist > max_dist){
                                max_dist = dist;
                            }
                        }
Run Code Online (Sandbox Code Playgroud)

这个网站,我得到这个代码:

//-- Draw only "good" matches (i.e. whose distance is less than 3*min_dist )
std::vector< …
Run Code Online (Sandbox Code Playgroud)

android opencv matching threshold orb

0
推荐指数
1
解决办法
4783
查看次数

从数组中匹配元素

我有如下数据结构.

[{"league"=>:nba, "period"=>"h1","edge"=>-5.0, "home_team"=>"Cavaliers"},   
{"league"=>:nba, "period"=>"h1", "edge"=>-6.0, "home_team"=>"Pistons"}, 
{"league"=>:nba, "period"=>"h1", "edge"=>-6.0, "home_team"=>"Bucks"},   
{"league"=>:ncaab, "period"=>"h1", "edge"=>-7.0, "home_team"=>"Wisconsin"},   
{"league"=>:ncaab, "period"=>"h1", "edge"=>-7.0, "home_team"=>"Wisconsin"}]
Run Code Online (Sandbox Code Playgroud)

我需要为数组中的每个元素分配一个新的键/值对,key = "id",value = x,其中x是一个整数.本x应是每一个元素,它同样"period""home_team"值是相同的,否则什么x是无所谓.所以上面应该会产生这样的结果:

[{"league"=>:nba, "period"=>"h1","edge"=>-5.0, "home_team"=>"Cavaliers", "id"=>1},   
{"league"=>:nba, "period"=>"h1", "edge"=>-6.0, "home_team"=>"Pistons", "id"=>2},    
{"league"=>:nba, "period"=>"h1", "edge"=>-6.0, "home_team"=>"Bucks", "id"=>3},  
{"league"=>:ncaab, "period"=>"h1", "edge"=>-7.0, "home_team"=>"Wisconsin", "id"=>4},   
{"league"=>:ncaab, "period"=>"h1", "edge"=>-7.0, "home_team"=>"Wisconsin", "id"=>4}]
Run Code Online (Sandbox Code Playgroud)

ruby set matching

0
推荐指数
1
解决办法
83
查看次数

如何在Haskell中匹配列表元素1对1

我有两个相同数量的元素列表,例如:[1,2,3]['a','b','c'].

我想以格式合并它们[(1,'a')(2,'b')(3,'c')].可能吗?如果是这样,怎么办?我找不到办法.

haskell list matching

0
推荐指数
1
解决办法
87
查看次数

Javascript 和 Regex - 字符串中单词的严格匹配

我有一个这样的字符串:

Free-coffee and coffee-free is free coffee
Run Code Online (Sandbox Code Playgroud)

我只需要匹配和替换单独的单词free而不是单词{Free}-coffeecoffee-{free}

想法是在字符串中标记坏词并添加这样的HTML标签<strong>

Free-coffee and coffee-free is <strong>free<strong> coffee.
Run Code Online (Sandbox Code Playgroud)

我尝试使用空格,但如果在这句话之前有空格,有时会失败。

这是我当前的正则表达式:

/(\sfree\s|\sfree|free\s)/ig
Run Code Online (Sandbox Code Playgroud)

注意:这需要不区分大小写。

这是代码示例:

var text = "Free-coffee and coffee-free is free coffee";
text = text.replace(/(\sfree\s|\sfree|free\s)/ig, " <strong>strong</strong> ");
Run Code Online (Sandbox Code Playgroud)

请帮帮我。

javascript regex matching string-matching

0
推荐指数
1
解决办法
619
查看次数

正则表达式代码太长且效率低下。我想让它变得更好

编辑:好的,我很抱歉,因为我对问题的第一个措辞过于简单,技术上正确的答案不适用于我的案例,所以这次我会尽量详细。

我正在构建一个正则表达式来捕获单个或复合代码。每个代码都以“H”、“G”、“EUH”或“AUG”开头,后跟三位数字 (H123) 或三位数字、一个点和一位数字。(H123.1)。第一个数字不能是零。

每个 H 代码后面可以跟一个或多个以下字符:“idDfF”.(H231Df)。每个 P 代码后面可以跟一个或多个这些字符:“AEBDab”。(P333a)。每个 EUH 代码后面都可以跟“A”。(EUH123A)。

化合物示例:H123Df+H234+H234.1+H342.1Fd 和 P123.1+P555D 空格可以在字符串中的任何位置,除了 3 位数字,它们总是相互跟随,没有空格。点或破折号可以在末尾的额外字符之前(H123-Df、H123.Df)

我需要匹配每个化合物或单个代码。请注意,在我之前的尝试中,我检测到 H567+H890+H654 正确,但也检测到 H567、H890 和 H654,这是错误的。一旦匹配了一个集合,它的内部代码不应再被视为单个代码。

我目前的方法实际上是 4 个不同的正则表达式代码,每组代码一个。它主要有效(我猜),但它非常乏味,如果将另一个代码添加到化合物中将无法工作,并且在正则表达式中添加更复杂的东西时,它非常难以维护。这是 P 代码的正则表达式示例。

`p = "P\s*\d{3}[.\s-]*[AEBDab]*\s*[+/]\s*P*\s*\d{3}[.\s-]*[AEBDab]*\s*[+/]\s*P*\s*\d{3}[.\s-]*[AEBDab]*|P\s*\d{3}[.\s-]*[AEBDab]*\s*[+/]\s*P*\s*\d{3}[.\s-][AEBDab]*|P\s*\d{3}[.\s-]*[AEBDab]*\s`"
Run Code Online (Sandbox Code Playgroud)

如您所见,它非常长且效率低下,编辑一个小东西会花费很多时间并且很容易出错。

我怎样才能以更好的方式实现这一目标?是制作 4 个正则表达式更好还是仅一个用于捕获所有 4 个代码的所有格式?

编辑:现实版本看起来完全像这样:

text = "random text
H326random text H243Df+H546+H677-Drandom text
randomtext P234a+P333.Ddrandom text
someother randomtexts"

output = [H326, H243+H546+H677, H234+H333]
Run Code Online (Sandbox Code Playgroud)

注意:所提供的文本中的空格非常随机,因为它们是用 pdfminer 库解析的 PDF 文本,它非常混乱了顺序和空格,但它是我发现的唯一一个可以实际“读取”我所有 10k PDF 文件的库有,其他库会产生空字符串,或者只是读取 PDF 的一部分。

注意:如果您能解释一下您的答案,因为在我工作时,我总是在发现新格式,并且我希望能够根据需要编辑正则表达式。

谢谢!

python regex parsing matching

0
推荐指数
1
解决办法
124
查看次数