一个相当有用的利器,提高检索匹配的效率!

增强信息检索精度的利器:Propositional Retrieval 深入探讨 Propositional Retrieval是一种强大的检索策略,能够提高信息检索的精度和效率。通过本文的介绍,您已经了解了其基本实现和可能遇到的挑战。Dense X Retrieval 论文OpenAI Embeddings 使用指南。 阅读详情

正则表达式(Regular Expression,下文简称为RegEx或正则)是一个很棒的利器,它广泛应用于字符串的查找、匹配以及替换等场景,比如检查邮箱、手机号、URL等等。以其简短的表现形式和高效的查找匹配效率总是让人爱不释手。本文旨在帮助大家入门正则并学会解决常见的正则问题,希望能帮到大家。

一. 初识正则

1. 正则给人的直观印象

很多人觉得正则表达式很难,一般有两种情况:第一种是确实看的比较深入,这种大神太少了,至少我现在只认识了一个。另外一种情况就是被正则晦涩难懂的表达形式吓到了。本文主要是针对第二种人,我想说的是正则表达式真的不难,最起码学会初级和中级的应用不难。

2. 一个常见的正则小应用

相信很多人应该碰到过“检测用户输入的手机号或者邮箱是否合法”这种需求。这种例子用正则来做最合适不过了。比如下面的正则就可以判断一个邮箱是否合法。

^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$

我记得学正则之前看到这个表达方式后还是很迷惑的,什么鬼啊,完全看不出和邮箱有什么联系。不过现在看着就感觉很简单了,都是一些基础的正则符号,相信大家看完本文后,再回头看这个表达式会有豁然开朗的感觉。

二. 走进正则表达式的世界

上面说了那么多,目的是为了让大家对正则有个初步的概念。下面主要说明正则的基本语法。看完这部分之后,就能很轻松地看懂上面的那个匹配邮箱地址的正则了。

1. 元字符

元字符其实就是正则中的保留字符,这些字符在正则表达式中有着自己特殊的含义。就像Java中的class和interface关键字一样,他们不是普通的字符串,有着自己特殊的含义。

  • 脱字节符:^

意思:代表一行文本的开头
用处:当我们想从一行文本的开头处匹配时,那么这个字符是个很好的选择。

  • 美元符号:$

意思:代表一行文本文本的结尾
用处:当我们想匹配到一行文本的结尾时,那么这个字符是个很好的选择。

  • 单词分界符:\b

意思:代表一个单词的开始或者结束
用处:当我们想匹配字符串中的某一个单词时,可以用这个符号匹配单词的开始和结束的位置

  • 取非符号:^

意思:用在字符串组(下面会讲到)中,代表“非”的意思。
用处:这个符号和脱字节符号是同一个字符,只是用在不同的地方表示不同的意思,下面的字符组的例子我们会用到它。

  • 点号通配符:.

意思:你没看错,这个小圆点,代指任何一个字符。(除了换行符)
用处:当我们对某个字符没有任何要求时,可以用它通配任意一个字符。

我对元字符的理解就是:正则匹配其实就是规则匹配,正则表达式其实就是一个规则表达式,元字符就是制定了规则,比如.就代表任意一个字符,具体是什么字符不关心。只有这样,才能抽象出一定的规则,实现更灵活和复杂的匹配。

2. 量词的三个分类

上面提到了一些基础的元字符,一般匹配某一个或某一类字符。下面介绍一下三个量词字符‘*’‘+’‘?’。它们用来修饰基本的正则表达式,表示正则的匹配次数。

分类匹配次数
*匹配零次或者多次
+最少匹配一次,可以匹配多次
?匹配零次,或者匹配一次

比如,一个用来匹配单词的基本的正则表达式:

\b\w\w\b    // 匹配具有两个字母的单词。

 那么,很显然,上面的正则只能匹配只有两个字符的单词,但是我们的目的是匹配所有的单词,那么该怎么搞呢,我们也没法确定这个单词到底有多少个字符。

这里就会用到量词了,如下:

\b\w\w*\b    //这个正则和上面的那个比,只多了一个字符‘*’意义就完全变了。它表示“有任意多个\w”,这正好符合要求。

上面的例子中多了一个‘*’,意思是,符号‘*’前面的那个字符,出现零次或者多次。

当然,我们也可以改成下面的写法:

\b\w+\b   // 这个正则和上面的那个表达的意思一样。

为什么可以这样呢,因为“一个单词最少有一个字母”。这里之所以可以这么简单,是因为‘+’最少匹配一次,所以,被这个正则匹配的字符一定最少有一个字母。符合要求。

然而,这还不够,还有一种情况我们没有考虑。

假设我们想把下面的HTML代码中的第一个div标签的内容过滤出来,该怎么搞呢

<html><div>第一个DIV</div><div>第二个DIV</div></html>

你可能会想到用:

<div>.*</div>

 这个其实不行,它匹配的结果是:

<div>第一个DIV</div><div>第二个DIV</div>

这明显不是我们想要的结果。也就是说‘*’可以匹配零个字符和多个字符,但是,当有多种合适的匹配结果时,其总是优先匹配字符最多的结果。

这就尴尬了。。。

怎么搞,怎么让‘*’匹配第一个,而不是同时匹配两个呢。

这就要再学习一个新知识了:

正则表达式的匹配模式有三种,分别是:贪婪模式(最多匹配模式),勉强模式(最少匹配模式)和占有模式。正则默认使用的是贪婪模式。

分类量词特性
匹配优先量词*  +  ?尽可能多的匹配
忽略优先量词*?  +?  ??尽可能少的匹配
占有优先量词*+  ++  ?+类似于匹配优先,但一旦匹配就不会退还,类似于“固化分组”

通过上面的表格,我们可以知道,可以用‘*’的勉强模式‘*?’就可以达到效果。

 所以,正确的正则应该是:

<div>.*?</div>

学会了‘*’的勉强模式,那么‘+’和‘?’也就同理了。 

3. 字符组

字符组是正则中一个很重要的概念。字符组匹配的是单个字符,这个字符可以是字符组中列出的任意一个字符。字符组的表现形式为:[....]。

当我们想匹配的某一个字符不是固定的,比如,我们想匹配一段文字中所有的数字,也就是说要匹配所有的 0~9 这十个字符。这时我们就需要用到字符组这个概念。

关于字符组其实很简单,这里举两个小例子。

记得以前看过一句话“一篇议论文中提到的数字概念越多,就越有说服力”。暂且不去考证这句话的真假。假设我们现在有一篇文章,需要找出文中所有的数字并统计数字的个数。那么我们该怎样用正则过滤出所有的数字呢。

首先,我们可以这样:

[0123456789]    // 该字符组匹配单个字符,这个字符可以是 0123456789 这十个数字中的任何一个

 也可以简化一下变成这样

[0-9]    //中间的‘-’的意思是‘从x到y所有字符’,该顺序遵循ASCII表的顺序,这里也同样表示 0123456789 这十个数字中的任何一个数字

 当然还有更简化的写法,上面也提到了

\d    //  ‘\d’这个符号代指任意一个数字,范围是:0-9

 再举个例子,还是上面的语境,我们要匹配所有的数字,除了数字‘0’和‘9’,也就是匹配‘0’和‘9’之外的所有数字


如果你前面的看懂了,那么这个问题就非常简单了

[^09]    //‘^’用在字符组中是“取非”的意思,整个字符组的意思变成了“匹配单个字符,但这个字符不能是字符组中列出的任何一个”。注意:‘^’表示“取非”的意思时,必须放在字符组中字符的最前面

 再来几个例子加深理解

[^a-f]    // 匹配单个字符,但是这个字符不能是‘abcdef’中的任何一个。
[^\d]    // 匹配单个字符,但是这个字符不能是数字。

字符组当然也有很多常用的快捷字符组:

字符组匹配范围
\d匹配单个字符,这个字符必须是数字
\D匹配单个字符,这个字符不能是数字,等于[^\d]
\w匹配单个字符,这个字符必须是字母
\W匹配单个字符,这个字符不能是字母,等于[^\w]
\s匹配单个字符,这个字符是一个空白字符(空格、制表符等等)
\S匹配单个字符,这个字符不能是空白字符,等于[^\s]

4. 环视

什么是环视?

环视就是在匹配字符串的时候,规定字符串的前面或者后面的字符必须符合环视的要求。

先来整体看一下环视的分类和表现形式:

环视的种类

符号表示具体含义
顺序肯定环视(?=…)某个字符后面有某个字符
顺序否定环视(?!…)某个字符后面没有某个字符
逆序肯定环视(?<=…)某个字符前面有某个字符
逆序否定环视(?< !…)某个字符前面没有某个字符

可以看到,环视总共分为四种,并且具有各自的意思和表达方式。我们接下来举个例子来说明一下环视的用法。

实现数字的三位分割,也就是我们日常见到的金钱的表示方法,总是每三位加一个‘,’。比如余额为 12345678 元,往往被写成 12,345,678 元 。

这个问题怎么解决呢,这个问题的关键是要找出需要插入‘, ’的位置。

我们可以总结出一个规律,“从后往前看,都是三个数字一组”,也就是

(\d\d\d)+$   // 三个数字一组

上面这个正则,只需要将所有的 (\d\d\d)+$ 替换成  , (\d\d\d)+$ 就可以了。

下面,我再分别针对环视的不同种类,分别举例说明一下具体的用法:

1.顺序肯定环视

比如我们想匹配hellochillax helloxiao里里面的hello,但是有个要求:在hello后面必须有chillax这个字符。

我们可以这样做:hello(?=chillax)


2.顺序否定环视

还是上面的这个字符串hellochillax helloxiao,这次,要求变了:在hello后面不能有chillax这个字符。

我们可以这样做:hello(?!chillax)


3.逆序肯定环视

比如我们想匹配hellochillax xiaochillax里里面的chillax,但是有个要求:在chillax前面必须有hello这个字符。

我们可以这样做:(?<=hello)chillax


4.逆序肯定环视

比如我们想匹配hellochillax xiaochillax里里面的chillax,但是有个要求:在chillax前面不能有hello这个字符。

我们可以这样做:(?<!hello)chillax


5. 捕获

这个功能其实是为了让我们更好地控制正则匹配的字符。有的时候我们为了获取到目标字符串,必须加入一些上下文元素,但是这些上下文元素并不是我们想要的,我们可以通过“捕获”来指出想要的部分,去掉不想要的部分。

比如,还是上面的那个过滤HTML中div标签的例子,如果我们只想过滤出第一个div标签里的内容,而不想要div标签,该怎么实现呢。

其实我们可以把想要的字符串对应的正则用括号括起来,就可以通过编程语言的一些函数获取到这个括号里的内容,从而达到除去上下文无用字符的目的。

待过滤HTML代码:

<html><div>第一个DIV</div><div>第二个DIV</div></html>

过滤出<div>第一个DIV</div>的正则是:

<div>.*?</div>   //上面的例子,应该能看懂了

过滤出第一个DIV的正则是:

<div>(.*?)</div> //比上面多了一对括号。我们可以通过直接获取括号里的内容来直接得到想要的字符串‘第一个DIV”

捕获的思路是通过添加括号,然后单独取某个括号的匹配内容,来实现更灵活的匹配策略。

具体实现每种语言都不一样,遇到这种场景首先想到用捕获,然后查一下该语言的正则是怎么使用捕获的即可。

 6. 模式修饰符(modifier)

在某些时候,我们需要对正则进行一些设定,用来满足某些特殊需求。

先来看一下常用的模式修饰符:

modifier作用
(?i…)不区分大小写
(?-i…)取消不区分大小写
(?s…)点号通配模式
(?m…)增强的行锚点模式

这一块要一个一个解释了:

1. (?i…)   不区分大小写

有的时候我们想匹配某些字母,但是不区分大小写,比如我们想匹配字母‘ABCDabcd’,

最直观的,我们可以这样写:

[abcdABCD]   //最直白的正则。。

 也可以这样:

[a-dA-D]    //使用‘-’,可以简化连续的字符的书写,比上面那个稍好。

 也可以使用模式修饰符:

(?i:[abcd])  //在(?i:)里面的字符,不区分大小写,全部匹配

 2. (?-i…)   取消不区分大小写

这个更简单,就是在上面那个符号内范围内,如果你想局部区分大小写,可以用这个。不举例了~

3. (?s…) 点号通配模式

这个有必要说一下,本文刚开始就介绍了一个特别有用的元字符‘.’,上面说它可以指代任何一个字符,除了换行符。那么,如果你想用“.*”来匹配一大段文字的话,里面有很多换行符,实现起来就很困难了。

所以,我们可以指定“.”暂时可以匹配换行符,所以可以写成:

(?s:.*)  //在这个括号内,显式指定'.'匹配任何字符,包括换行符。

 4. (?m…)   增强的行锚点模式(也成为多行文本模式)

增强的行锚点可以改变‘^’和‘$’的匹配效果。正常情况下,‘^’和‘$’不会受到文本中换行符的干扰,也就是说如果一段文字中有多个换行符,那么正常情况下‘^’和‘$’分别匹配这段文字的开头和结尾。

但是如果开启了增强的行锚点模式,‘^’和‘$’就会分别匹配这段文字的第一个换行符之前的文字的开头和结尾。

例如:

My Life Getting Better \n NO1

 然后有:

^.*$  //匹配结果为:My Life Getting Better \n NO1
(?m:^.*$)  //匹配结果为:My Life Getting Better

 可以看出明显的不同。。

三. 把正则应用于日常工作中

不仅是在代码里可以用到正则,平时工作与生活也可以用得到。

可以用正则写一写小工具来提高效率,比如查log,或者查文本,可以用正则进行模糊搜索、排版等等。

举个例子,使用 git 时,经常需要 cherry-pick 许多个 commit:

commit 64a70be5205848bb89f11df9555f10f0bb118b62 (HEAD -> master)
Author: xxx <xxx@tencent.com>
Date:   Fri Mar 1 17:36:26 2019 +0800

    xxx默认示例

commit 36f4a80471dbd9c923f762919c541f0f4f921760
Author: xxx <xxx@gmail.com>
Date:   Fri Mar 1 17:33:02 2019 +0800

    Update README.md

commit 0fa181462d932e8ff5ccc94f805423e6d41bed46
Author: xxx <xxx@gmail.com>
Date:   Fri Mar 1 17:31:53 2019 +0800

    Initial commit

怎么提取里面的 commit id 呢,用正则就很简单,只需要扫一下这个文本,提取出来就好。说实话刚开始我是手动一个一个的拷贝出来的,因为一般也就十几个 commit,手动拷贝也很快,但是直到遇到了一次有几十个 commit 的,还是写了个工具,把文本写入文件,然后用正则几毫秒就可以过滤出来。

四. 需要学习的还有很多

1. 正则表达式的效率

没错,正则表达式也是讲效率的,同一个目标字符串,同一个匹配要求,不同的正则表达式其效率可能差别很大。所以,作为一名合格的程序员,不仅要实现功能,还要时刻考虑效率的问题。

2. 正则的流派和搜索引擎

正则是有很多流派的,不同的流派之间可能会有略微的不同,但是基本大同小异。

正则的驱动引擎分为两种:DFA 和 NFA。分别是确定型有限自动机和非确定型有限自动机,DFA的特点是“文本主导”,NFA的特点是“表达式主导”。

不同的编程语言可能属于不同的流派,也可能使用不同的驱动引擎,这会导致其在对正则的支持上会略有不同。比如 NFA 比 DFA 支持的正则特性要多。

当然,这些都可以先不用考虑,因为一般体会不到这种差别。。遇到具体语言时,Google 查一下就好。

3. 元字符转义

上面提到了很多正则里的元字符,它们出现在正则表达式中会有着自己特殊的含义。那么,在正则匹配过程中,如果我们就是想匹配这些字符呢。那就需要转义了,转义的表示方式是在被转义的元字符前面加一个反斜杠。

比如我们想匹配下面的字符串:

[私たち]

用下面的正则可以匹配么

[私たち]    //这个正则的意思是:匹配单个代码点,这个代码点可以是‘私’、‘た’、‘ち’中的任意一个

当然不行。。 

这里我们需要对“[”和“]”进行转义,变成这样

\[私たち\]  //这里使用‘\’对元字符进行转义,使其变成一个普通的字符

 当然,有些语言中,‘\’本身也需要转义,比如在Java中就需要下面这种表示:

\\[私たち\\]

其他的元字符同理~~ 

4. 正则的字符编码问题

上面多次提到,一个正则符号匹配单个或者多个“字符”,这个“字符”需要着重解释一下。

编码字符集有很多,比如Unicode、GBK、ASCII等等。。编程中最常用的编码字符集是Unicode。最常使用的编码格式是UTF-8 。UTF-8支持的字符范围和Unicode一样广泛,并且能够区分Unicode字符和ASCII字符,变长编码的方式也使得其存储效率较高,因此在编程中广泛被使用。

字符的存储方式是二进制编码,比如一个ASCII字符就占一个字节的空间,范围是0~127 。那么,每一个字符,在Unicode字符集中就对应着一个十六进制数字。我们把这个数字称为“代码点”(代码点指的是该字符在Unicode对应表中对应的数值)。我们需要注意的是,正则匹配时,匹配的“单个字符”其实并不准确,准确得说,应该是“单个代码点”。

绝大多数字符都对应一个代码点,有少数字符对应多个代码点。当我们用“.”去匹配这些字符时,会得不到我们想要的结果。

比如一个汉字对应一个代码点,所以我们可以用“.”去匹配单个汉字。

Unicode中有很多组合字符,这些字符看上去像是一个代码点,但是其实需要用多个代码点去表示。

比如,有兴趣的可以试一下用“.”去匹配下面这些字符:

กิิ ก้้ ก็็ ก็็ กิิ ก้้ ก็็ กิิ ก้้ กิิ ก้้ ก็็ ก็็ กิิ ก้้ ก็็ กิิ ก้้      //这里的每一个字符都对应着两个代码点

PS:说这些东西的目的是能够对编码有一定的了解。实际开发中基本用不到。不过对字符编码还是需要多了解一下,很重要~

五. 总结

精通正则表达式不仅要学会语法,更要在实际问题中不断练习。只有不断思考,不断尝试,才能将正则用在刀刃上,切切实实提升开发效率,达到应有的效果。


有热门推荐????

光速搜索:提升文件检索效率的利器 随着数字化转型步伐的加快,企业和个人用户对文件检索工具的需求日益增长。光速搜索v2.2.2.0应运而生,它是一款革命性的文件检索工具,旨在为用户提供前所未有的高效搜索体验。不同于传统的搜索软件,光速搜索采用了一系列创新技术,例如先进的搜索算法、实时索引技术以及AI预测功能,这些元素共同作用,使得文件检索不仅速度更快,而且更为精准。本章节将对光速搜索v2.2.2.0的核心特性进行概览,包括其如何重新定义了文件检索的效率和精度。 阅读详情

相关推荐

世界坐标系/相机坐标系/图像坐标系 转换

目录一、各坐标系简要介绍二、坐标系转换2.1 世界坐标系转为相机坐标系2.2 相机坐标系转为物理图像坐标系2.3 物理图像坐标系转为图像坐标系2.4 总结2.5 为什么要使用齐次坐标参考文献 一、各坐标系简要介绍 首先介绍数字图像处理领域中的图像坐标系,如上图左图所示,坐标系O_0为图像坐标系,其原点是在图像的左上角,每一个像素通过其所在位置的列数和行数索引 (u,v) 来表示。 另外需要建立图像坐标与物理单位的关系,而后才能将目标的真实世界坐标转换为图像坐标。即建立以物理单位表示的物理图像坐标系(有些文

流觞时光 1万+

Java 正则表达式 匹配json字符串某个值的key值

Java 正则表达式 匹配json格式的字符串某个值的key值 在处理数据中,需要找到含有某个值的数组的key的内容,比如: Json数据格式: {"file_c":[{"uploadTime":"1621998257947","size":"147879","requestId":"594885615247740928","name":"充值卡.txt"}],"content":"上传附件"} 根据是否含有uploadTime 上传时间,来判断是否有附件的内容,并获取到对应的key值...

一路向前 5880

Quartus (Quartus Prime 18.1)的安装及仿真步骤

前两天做计组的课设需要用到Quartus 这个软件,但安装有点麻烦,在网上搜了很多教程,发现都是旧版本的,最后弄了好半天才把环境搭建好。所以,分享一下它的搭建过程。 因为我不经常用它,所以安装的版本是精简版的其他版本的也应该差不多以下是需要下载的安装包: 准备: Quartus Prime 精简版,最新发布: v18.1 1. QuartusLiteSetup-18.1.0.625-wi...

weixin_41082948的博客 8万+

检索匹配的利器:正则表达式

正则表达式(Regular Expression,下文简称为RegEx或正则)是一个很棒的利器,它广泛应用于字符串的查找、匹配以及替换等场景,比如检查邮箱、手机号、URL等等。以其简短的...

企鹅肖 743

STM32 ST-LINK Utility固件烧录全流程详解与实战技巧

本文详细解析了使用STM32 ST-LINK Utility进行固件烧录的全流程与实战技巧。从硬件连接、软件安装、核心三步操作(连接、擦除、烧录)到进阶的选项字节配置与批量脚本烧录,提供了完整的避坑指南和问题排查方案,帮助开发者高效完成STM32程序下载。

lambda的博客 768

kubeadm init 运行时kebelet启动失败问题

解决k8s kubeadm init时遇到的kubelet问题

ZDPZN的博客 6074

正则匹配json字符串中的key,将kebab-case转换为camelCase

项目中遇到处理接口返回json的需求: 将json键中的kebab-case转换为camelCase 为解决需求进行了一系列学习,在此记录学习过程。 首先了解几种case: 命名法 camelCase 驼峰命名(lowerCamelCase) snake_case 蛇形命名 kebab-case 短横线命名 PascalCase 帕斯卡命名(UpperCamelCase) 正则表达式:匹配json中的key 由于觉得以JSONObject形式添一个键值对再删一个键值对的操作,不是很合理,相当于所有.

weixin_45778397的博客 1604

已解决“TimeouEror [WinEror 10060由于连接方在一段时间后没有正确答复 或连接的主机没有反应,连接尝试失败“,亲测有效!!!

已解决"TimeouEror [WinEror 10060由于连接方在一段时间后没有正确答复 或连接的主机没有反应,连接尝试失败",亲测有效!!!

wbajsjhhhhh的博客 1万+

使用grep和Perl正则表达式提取JSON键值对

使用grep和Perl正则表达式提取JSON键值对

Leon_Jinhai_Sun的博客 556

C#上位机性能优化全攻略:彻底解决界面卡顿+多线程死锁+PLC数据延迟,产线实测稳定运行2年

一开始我们用的是网上找的零散优化代码,根本满足不了要求,后来花了2个月的时间,把之前27条产线的代码整理、重构、优化,做了一套这套方案上线后,连续稳定运行2年零3个月:界面响应时间稳定在50ms以内,多线程死锁率持续为0,PLC数据延迟稳定在150ms以内,系统可用率≥99.99%,帮客户一年省下了超过480万的停线损失、罚款损失和人工成本,客户第二年就把剩下的22条产线也全部交给我们做了,还介绍了3家同行。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 294

基于FPGA的数字信号处理(11)--定点数的舍入模式(2)向最临近值取整nearest

基于FPGA的数字信号处理(11)--定点数的舍入模式(2)向最临近值取整nearest

孤独的单刀 5475

正则匹配json中某个键值对_一个相当有用的利器,提高检索匹配的效率!

正则表达式(Regular Expression,下文简称为RegEx或正则)是一个很棒的利器,它广泛应用于字符串的查找、匹配以及替换等场景,比如检查邮箱、手机号、URL等等。以其简短的表现形式和高效的查找匹配效率总是让人爱不释手。本文旨在帮助大家入门正则并学会解决常见的正则问题,希望能帮到大家。一. 初识正则1. 正则给人的直观印象很多人觉得正则表达式很难,一般有两种情况:第一种是确实...

weixin_39562606的博客 2789

ruoyi-nbcio基于ruoyi的flowable前端支持自定义表单组件的自动获取方法

ruoyi-nbcio基于ruoyi的flowable前端支持自定义表单组件的自动获取方法

宁波阿成的博客 607

DBpedia Lookup: 提高数据检索效率的利器

DBpedia Lookup: 提高数据检索效率的利器 去发现同类优质开源项目:https://gitcode.com/ 是一个基于 Java 开发的工具,用于提高对 DBpedia 数据集的检索速度和准确性。作为一个开源项目,任何人都可以免费下载和使用它,并参与到项目的开发和改进中来。 什么是 DBpedia? 首先,我们了解一下 DBpedia。它是 Wikipedia(维基百科)的一个子项目...

gitblog_00041的博客 530

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

RerankingTransformer:高效图像检索的利器

RerankingTransformer:高效图像检索的利器 项目介绍 在计算机视觉领域,实例级图像检索是一项重要任务,它的目标是在大型数据库中搜索与查询图像中的对象相匹配的图像。传统的图像检索系统通常依赖于全局图像描述符的检索步骤,然后通过诸如基于局部特征的空间验证等操作进行后续的特定领域优化或重排。RerankingTransformer(RRT)项目正是为了解决这一问题而提出,它通过一种新型...

gitblog_00947的博客 702

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

siglip:提升图像文本匹配的利器

siglip:提升图像文本匹配的利器 项目介绍 在人工智能领域,多模态模型将图像与文本结合,为各种任务提供强大的支持。siglip(Sigmoid Loss for Language Image Pre-Training)正是这样一种模型,它基于CLIP(Contrastive Language-Image Pre-training)进行改进,引入了更高效的损失函数——sigmoid损失函数。si...

gitblog_00392的博客 1010

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【深入理解KMP算法 —— 字符串匹配的高效利器】

KMP算法由Donald Knuth、Vaughan Pratt和James H. Morris于1977年共同提出。它的主要目标是提供一种高效的字符串匹配方法,通过预处理模式串(pattern),在匹配过程中避免了重复的比较,从而大幅提升效率。KMP算法的时间复杂度为O(n + m),其中n是文本串(text)的长度,m是模式串(pattern)的长度。相较于朴素的字符串匹配算法O(n * m)的时间复杂度,KMP算法显著提高了匹配效率。

youngwyj的博客 1104

精准匹配:closestmatch——高效处理模糊字符串匹配的利器

精准匹配:closestmatch——高效处理模糊字符串匹配的利器 在现代应用中,用户输入的模糊性和错误是常见的问题。无论是拼写错误、顺序颠倒,还是输入不完全,这些都可能导致系统无法准确识别用户的意图。为了解决这一问题,我们推荐一款名为closestmatch的开源项目。它是一款简单而高效的Go语言库,专门用于模糊匹配输入字符串与目标字符串列表。 项目介绍 closestmatch是一个基于Go语...

gitblog_00950的博客 949

ChromeDriver与谷歌浏览器版本快速匹配-最新版120:Web自动化测试的利器

ChromeDriver与谷歌浏览器版本快速匹配-最新版120:Web自动化测试的利器 去发现同类优质开源项目:https://gitcode.com/ ChromeDriver与谷歌浏览器版本快速匹配-最新版120,一款专注于Web自动化测试的神器。它能帮助用户轻松匹配ChromeDriver和谷歌浏览器版本,确保自动化测试过程的顺畅。下面,让我们一起深入了解这个项目的魅力。 项目介绍 Chro...

gitblog_06743的博客 1092

medclip:医疗影像检索的利器

medclip:医疗影像检索的利器 在当今医学领域,影像资料的快速、准确检索是提高诊断效率的关键。今天,我们为您介绍一个开源项目——medclip,它通过微调CLIP模型,实现了对医学影像和其描述的高效检索。 项目介绍 medclip是一个基于CLIP模型的开源项目,旨在通过微调预训练的CLIP模型,使其适应医学影像数据集。该模型可以理解医学影像和与之相伴的文字描述之间的关联,从而实现对医学影像的...

gitblog_01040的博客 925

RAG检索精准度翻倍!小白也能掌握的元数据打标秘籍,告别“大海捞针“式检索

本文聚焦RAG工程实践中的知识打标与元数据维护技术,通过文档级和分块级标签提升检索精准度。介绍元数据筛选与语义匹配逻辑,从人工打标到LLM智能打标的工程实践,以及解决无筛选交互的三种策略。元数据管理是RAG从理论走向实战的桥梁,能显著提升检索效率与精准度,是确保RAG系统稳定交付高精准度结果的关键。

m0_59163425的博客 888

探索高效文本检索的利器:Approximate Nearest Neighbor Negative Contrastive Learning

探索高效文本检索的利器:Approximate Nearest Neighbor Negative Contrastive Learning 在文本检索领域,稠密表示(Dense Representation)正逐渐取代稀疏表示(Sparse Representation),带来诸多优势。然而,为了达到最佳效果,通常需要将两者结合使用。近期,一个名为“Approximate Nearest Nei...

gitblog_00017的博客 814

探秘InfoSearchAll:一站式全网信息检索利器

探秘InfoSearchAll:一站式全网信息检索利器 去发现同类优质开源项目:https://gitcode.com/ 项目简介 是一个开源的、跨平台的信息检索工具,它旨在帮助用户快速、全面地搜索互联网上的各种资源,包括但不限于学术论文、代码库、文档和新闻等。该项目的目标是通过聚合多个搜索引擎的结果,提供更高效、精准的搜索体验。 技术分析 InfoSearchAll的核心技术在于它的多源数据整合...

gitblog_00001的博客 794

WildCard:Java平台上的文件匹配利器

WildCard:Java平台上的文件匹配利器 在处理大量文件和目录的日常开发中,高效且灵活的路径匹配工具显得尤为重要。今天,向您隆重推荐一款名为WildCard的开源Java库,它不仅简化了文件及目录的模式匹配过程,更提供了便捷的文件操作功能,让您的项目管理更加得心应手。 项目介绍 WildCard是一个轻量级的Java库,专门用于执行高效的文件和目录模式匹配。它支持通过通配符和正则表达式对路径...

gitblog_00951的博客 607

猿创征文|计算机专业硕博研究生提高效率的10款科研工具

大家好,我是帝都某高校的一名在读研究生,研究方向为人工智能安全、强化学习、漏洞挖掘。今天想跟各位计算机相关专业的硕士生、博士生们分享几款超级实用并且能够提高科研效率的工具!!!希望能够得到大家的一键四连(点赞、收藏、评论、关注)~ 适用系统: Windows/Ubuntu/MacOS官网地址: https://www.anaconda.com工具介绍: Anaconda,我想对于每一位计算机专业的硕博研究生(尤其是目前做计算机视觉、机器学习、深度学习方向的研究生们)来说都不陌生。Anaconda 它是一个开

计算机科研杂货铺 7108
上一篇: 5万人远程办公的第一天,万万没想到……
下一篇: 爬虫,反爬虫,反反爬虫,这之间的斗争恢宏壮阔...
编程IT圈
博客等级 码龄6年 1130粉丝 544原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值