高亮显示检索结果演示
<style>#mybox > p { padding: 10px; }
</style>
<div id="mybox">
<p>20世纪40年代:正则表达式最初的想法来自两位神经学家:沃尔特·皮茨与麦卡洛克,他们研究出了一种用数学方式来描述神经网络的模型。</p>
<p>1956年:一位名叫Stephen Kleene的数学科学家发表了一篇题目是《神经网事件的表示法》的论文,利用称之为正则集合的数学符号来描述此模型,引入了正则表达式的概念。正则表达式被作为用来描述其称之为“正则集的代数”的一种表达式,因而采用了“正则表达式”这个术语。</p>
<p>1968年:C语言之父、UNIX之父肯·汤普森把这个“正则表达式”的理论成果用于做一些搜索算法的研究,他描述了一种正则表达式的编译器,于是出现了应该算是最早的正则表达式的编译器qed(这也就成为后来的grep编辑器)。</p>
<p>Unix使用正则之后,正则表达式不断的发展壮大,然后大规模应用于各种领域,根据这些领域各自的条件需要,又发展出了许多版本的正则表达式,出现了许多的分支。我们把这些分支叫做“流派”。</p>
<p>1987年:Perl语言诞生了,它综合了其他的语言,用正则表达式作为基础,开创了一个新的流派,Perl流派。之后很多编程语言如:Python、Java、Ruby、.Net、PHP等等在设计正则式支持的时候都参考Perl正则表达式。</p>
</div>
<p><br><br><button id="btn">开始查找</button> <input type="text" id="tfind" placeholder="支持正则" /> <span id="msgout">例如:\d{2}年</span></p>
<script>
let findStr = () => {
let reg = new RegExp(tfind.value,'g');
let str = mybox.innerText;
let matchAr= str.match(reg);
if (matchAr) {
str = str.replace(reg, '<span style="background: orange">$&</span>');
}
str = str.replace(/^.*$/gm,'<p>$&</p>');
str = str.replaceAll('<p><\/p>','');
mybox.innerHTML = str;
};
btn.onclick = () => findStr();
</script>
所给的正则例子, \d{2}年,\d 表示数字,同等于 ,\d{2} 同等于 {2},表示数字必须出现两个。式子中的 “年” 仅代表它自己。所以,这个式子的意思是,找出匹配 xx年 这样结构的字串。
文本框支持拖曳,涂抹示例正则后拖到文本框即可。 本帖最后由 马黑黑 于 2023-1-14 18:18 编辑
<div id="mybox"><p>20世纪40年代:正则表达式最初的想法来自两位神经学家:沃尔特·皮茨与麦卡洛克,他们研究出了一种用数学方式来描述神经网络的模型。</p><p>1956年:一位名叫Stephen Kleene的数学科学家发表了一篇题目是《神经网事件的表示法》的论文,利用称之为正则集合的数学符号来描述此模型,引入了正则表达式的概念。正则表达式被作为用来描述其称之为“正则集的代数”的一种表达式,因而采用了“正则表达式”这个术语。</p><p>1968年:C语言之父、UNIX之父肯·汤普森把这个“正则表达式”的理论成果用于做一些搜索算法的研究,他描述了一种正则表达式的编译器,于是出现了应该算是最早的正则表达式的编译器qed(这也就成为后来的grep编辑器)。</p><p>Unix使用正则之后,正则表达式不断的发展壮大,然后大规模应用于各种领域,根据这些领域各自的条件需要,又发展出了许多版本的正则表达式,出现了许多的分支。我们把这些分支叫做“流派”。</p><p>1987年:Perl语言诞生了,它综合了其他的语言,用正则表达式作为基础,开创了一个新的流派,Perl流派。之后很多编程语言如:Python、Java、Ruby、.Net、PHP等等在设计正则式支持的时候都参考Perl正则表达式。</p></div><p><button id="btn">开始查找</button> <input type="text" id="tfind" placeholder="支持正则" /> <span id="msgout">例如:\d{2}年</span></p>
<script>
let findStr = () => { let reg = new RegExp(tfind.value,'g'); let str = mybox.innerText; let matchAr= str.match(reg); if (matchAr) { str = str.replace(reg, '<span style="background: orange">$&</span>'); } str = str.replace(/^.*$/gm,'<p>$&</p>'); str = str.replaceAll('<p><\/p>',''); mybox.innerHTML = str;};
btn.onclick = () => findStr();
</script> 到底是教兽,玄之又玄{:4_173:} 樵歌 发表于 2023-1-14 20:28
到底是教兽,玄之又玄
正则有点玄而又玄{:4_173:} 马黑黑 发表于 2023-1-14 20:29
正则有点玄而又玄
非常道{:4_173:} 樵歌 发表于 2023-1-14 21:07
非常道
嗯,这是常道的 正则表达式居然那么早就出现了{:4_204:} 这个就是搜索引擎的来源吧,输入条件,符合条件的就都出来了呢。 红影 发表于 2023-1-14 22:11
正则表达式居然那么早就出现了
是很早的 红影 发表于 2023-1-14 22:17
这个就是搜索引擎的来源吧,输入条件,符合条件的就都出来了呢。
可是视为模糊查找,但我这个不是严谨意义上的。严谨意义上的模糊查找要比这个复杂很多,要做很多处理,还有依托爬虫功能。 马黑黑 发表于 2023-1-14 22:43
是很早的
还以为是近些年才出来的。因为自己知道代码晚,就以为它们出来得晚{:4_173:} 马黑黑 发表于 2023-1-14 22:44
可是视为模糊查找,但我这个不是严谨意义上的。严谨意义上的模糊查找要比这个复杂很多,要做很多处理,还 ...
哦哦,这样可以扩大搜索范围的吧。 红影 发表于 2023-1-15 00:08
哦哦,这样可以扩大搜索范围的吧。
但这个还不是,这个是支持正则查找而已。真正的模糊查找也需要用到正则匹配,但在前台,正则以通配符(比如 *.*、.*、.exe)呈现。 红影 发表于 2023-1-15 00:08
还以为是近些年才出来的。因为自己知道代码晚,就以为它们出来得晚
有很多东西,尤其是理论性质的,都是先行的,就像马克思的科学社会主义理论一样 马黑黑 发表于 2023-1-15 08:44
但这个还不是,这个是支持正则查找而已。真正的模糊查找也需要用到正则匹配,但在前台,正则以通配符(比 ...
嗯嗯,明白了。谢谢黑黑{:4_187:} 马黑黑 发表于 2023-1-15 08:45
有很多东西,尤其是理论性质的,都是先行的,就像马克思的科学社会主义理论一样
真是没想到呢,出乎意料的早。 红影 发表于 2023-1-15 10:59
真是没想到呢,出乎意料的早。
我说过,编程语言比计算机出的早,好多人不信 马黑黑 发表于 2023-1-15 11:55
我说过,编程语言比计算机出的早,好多人不信
主要是没想到的缘故吧{:4_173:} 红影 发表于 2023-1-15 12:33
主要是没想到的缘故吧
想到是什么意思
页:
[1]
2