Rumah hujung hadapan web tutorial js 正则表达式教程之前后查找lookaround详解_正则表达式

正则表达式教程之前后查找lookaround详解_正则表达式

Jun 28, 2017 pm 01:47 PM
Cari ungkapan

这篇文章主要介绍了正则表达式教程之前后查找lookaround,结合具体问题分析了向前查找及向后查找功能的实现技巧与注意事项,需要的朋友可以参考下

本文实例讲述了正则表达式教程之前后查找lookaround。分享给大家供大家参考,具体如下:

注:在所有例子中正则表达式匹配结果包含在源文本中的之间,有的例子会使用Java来实现,如果是java本身正则表达式的用法,会在相应的地方说明。所有java例子都在JDK1.6.0_13下测试通过。

一、问题引入

在HTML页面中,匹配出一对标签之间的文本,如匹配出页面的标签,即之间的文本:

文本:welcome to my page

正则表达式:<[Tt][Ii][Tt][Ll][Ee]>.*?

结果:welcome to my page

分析:<[Tt][Ii][Tt][Ll][Ee]>表示不区分大小写,这个模式匹配到了title标签以及它们之间的文本,但是并不完美,因为我们只想要title标签之间的文本,而不包括标签本身。解决这个问题我们就需要用到前后查找(lookaround)。

二、向前查找

向前查找指定了一个必须匹配但不在结果中返回的模式。向前查找实际上就是一个子表达式,它以?=开头,需要匹配的文本跟在=的后面。

看一个匹配出一个URL地址中协议部分的例子:

文本:http://blog.csdn.net/mhmyqn

正则表达式:.+(?=:)

结果:【http】://blog.csdn.net/mhmyqn

分析:URL地址中协议部分是在:之前的部分,模式.+匹配任意文本,子表达式(?=:)匹配:,但是被匹配到的:并没有出现在结果中。我们使用?=向正则表达式引擎表明,只要找到:就行了,但不包括在最终的返回结果里。这里如果不使用向前匹配(?=:),而是直接使用(:),那么匹配结果就会是http:了,它包括了:,并不是我们想要的。

注意:前后查找中的前、后是指模式与被查找文本的相对位置而言的,左为前,右为后。即向前查找为:xxx(?=xxx),而向后查找为(?<=xxx)xxx,向后查找在接下来会介绍到。

三、向后查找

向后查找操作符是?<=。但是并不是所有的正则表达式实现都支持向后查找,JavaScript就不支持,java语言支持向后查找。

比如要查找文本当中的价格(以$开头,后面跟数字),结果不包含货币符号:

文本:category1:$136.25,category2:$28,category3:$88.60

正则表达式:(?<=\$)\d+(\.\d+)?

结果:category1:$【136.25】,category2:$【28】,category3:$【88.60】

分析:(?<=\$)模式匹配$,\d+(\.\d+)?模式匹配整数或小数。从结果可以看出,结果不没有包括货币符号,只匹配出了价格。如果不使用向后查找,情况会是什么样呢?使用模式$\d+(\.\d+)?,这样会把$包含在结果中。使用模式\d+(\.\d+)?,又会把categery1(23)中的数字也匹配出来,都不是我们想要的。

注意:向前查找模式的长度是可变的,它们可以包含.、*、+之类的元字符;而向后查找模式只能是固定长度,不能包含.、*、+之类的元字符。

四、把向前查找和向后查找结合起来

把向前查找和向后查找结合起来使用,即可解决前面HTML标签之间的文本的问题:

文本:welcome to my page

正则表达式:(?<=<[Tt][Ii][Tt][Ll][Ee]>).*?(?=)

结果:<span style="color: #ff6600">【welcome to my page】</span>

分析:从结果可以看出,问题完美的解决了。(?<=<[Tt][Ii][Tt][Ll][Ee]>)是一个向后操作,它匹配但不消费它,(?=</[Tt][Ii][Tt][Ll][Ee]>)是一个向前操作,它匹配但不消费它。最终返回的匹配结果只包含了标签之间的文本了。

五、对前后查找取非

前面说到的向前查找和向后查找通常都是用来匹配文本,其目的是为了确定将被返回的匹配结果的文本的位置(通过指定匹配结果的前后必须是哪些文本)。这种用法叫正向前查找和正向后查找。还有一种负向前查找和负向后查找,是查找那些不与给定模式相匹配的文本。

前后查找的操作符:

(?=) 正向前查找
(?!) 负向前查找
(?<=) 正向后查找
(? 负向后查找

比如一段文本中即有价格(以$开头,后面跟数字)和数量,我们要找出价格和数量,先来看查找价格:

文本:I paid $30 for 10 apples, 15 oranges, and 10 pears. I saved $5 onthis order.

正则表达式:(?<=\$)\d+

结果:I paid 【$30】 for 10 apples, 15 oranges, and 10 pears. I saved 【$5】 on thisorder.

查找数量:

文本:I paid $30 for 10 apples, 15 oranges, and 10 pears. I saved $5 onthis order.

正则表达式:\b(?

结果:I paid $30 for 【10】 apples, 【15】 oranges, and 【10】pears. I saved $5 on this order.

分析:(?

六、小结

有了前后查找,就可以对最终的匹配结果包含哪些内容做出精确的控制。前后查找操作使我们可以利用子表达式来指定文本匹配操作发生的位置,并收到只匹配不消费的效果。

PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:

JavaScript正则表达式在线测试工具:
http://tools.jb51.net/regex/javascript

正则表达式在线生成工具:
http://tools.jb51.net/regex/create_reg

Atas ialah kandungan terperinci 正则表达式教程之前后查找lookaround详解_正则表达式. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk mematikan Cari iPhone Saya Bagaimana untuk mematikan Cari iPhone Saya Nov 09, 2023 pm 02:21 PM

Apa yang berlaku apabila anda mematikan Cari Saya pada iPhone? Cari iPhone Saya membantu anda mencari peranti yang hilang atau dicuri. Apabila didayakan, Cari iPhone Saya membolehkan anda menjejak lokasi peranti anda pada peta, memainkan bunyi dan membantu anda mencari peranti anda. Cari Saya juga termasuk Kunci Pengaktifan untuk menghalang sesiapa daripada menggunakan iPhone anda. Apabila anda mematikan Cari iPhone Saya, anda kehilangan semua ciri ini, yang mungkin menyukarkan untuk memulihkan peranti Apple yang hilang. Walaupun Cari iPhone Saya sangat berguna, anda harus melumpuhkannya apabila anda ingin menjual, menderma, menukar telefon anda atau menghantarnya untuk penggantian bateri atau sebarang perkhidmatan lain. Melakukan ini akan memastikan tiada sesiapa boleh mengakses maklumat tentang anda

4 Cara untuk Mematikan Cari Saya pada iPhone 4 Cara untuk Mematikan Cari Saya pada iPhone Feb 02, 2024 pm 04:15 PM

Apl Cari Saya Apple membolehkan anda mencari iPhone anda atau peranti lain untuk mengelakkannya daripada hilang atau dilupakan. Walaupun Cari Saya ialah alat yang berguna untuk menjejak peranti, anda mungkin mahu melumpuhkannya jika anda bimbang tentang isu privasi, tidak mahu menghabiskan bateri anda atau atas sebab lain. Nasib baik, terdapat beberapa cara untuk mematikan Cari Saya pada iPhone, semuanya akan kami terangkan dalam artikel ini. Cara Mematikan Cari Saya pada iPhone [4 Kaedah] Anda boleh mematikan Cari Saya pada iPhone dalam empat cara. Jika anda menggunakan Kaedah 1 untuk mematikan Cari, anda boleh melakukan ini daripada peranti yang anda mahu nyahdayakannya. Untuk meneruskan kaedah 2, 3 dan 4, iPhone yang anda ingin matikan Finder harus dimatikan atau

Cari indeks unsur dalam tatasusunan menggunakan fungsi Array.IndexOf dalam C# Cari indeks unsur dalam tatasusunan menggunakan fungsi Array.IndexOf dalam C# Nov 18, 2023 am 09:59 AM

Gunakan fungsi Array.IndexOf dalam C# untuk mencari indeks elemen dalam tatasusunan Dalam program C#, apabila kita perlu mencari indeks elemen dalam tatasusunan, kita boleh menggunakan fungsi Array.IndexOf. Fungsi Array.IndexOf mencari elemen yang ditentukan dalam julat tatasusunan yang ditentukan dan mengembalikan indeks kejadian pertamanya. Jika elemen tidak dijumpai, -1 dikembalikan. Berikut ialah kod sampel yang menunjukkan cara menggunakan fungsi Array.IndexOf untuk mencari elemen dalam tatasusunan.

Bagaimana untuk menyemak nombor siri cakera keras dan alamat mac Bagaimana untuk menyemak nombor siri cakera keras dan alamat mac Feb 18, 2024 pm 07:45 PM

Nombor siri cakera keras dan alamat MAC adalah pengecam penting dalam perkakasan komputer dan sangat berguna dalam mengurus dan menyelenggara sistem komputer. Artikel ini akan memperkenalkan cara mencari nombor siri cakera keras dan alamat MAC. 1. Cari nombor siri cakera keras Nombor siri cakera keras ialah pengecam unik yang digunakan oleh pengeluar cakera keras untuk mengenal pasti dan menjejaki cakera keras. Dalam sistem pengendalian yang berbeza, kaedah mencari nombor siri cakera keras adalah sedikit berbeza. Windows: Buka Prompt Perintah (cari "cmd" dalam menu Mula) dan masukkan arahan berikut dan tekan Enter: wmicdisk

Fungsi glob() dalam PHP digunakan untuk mencari fail atau direktori Fungsi glob() dalam PHP digunakan untuk mencari fail atau direktori Nov 18, 2023 pm 06:17 PM

Fungsi glob() dalam PHP digunakan untuk mencari fail atau direktori dan merupakan fungsi operasi fail yang berkuasa. Ia boleh mengembalikan laluan fail atau direktori berdasarkan padanan corak yang ditentukan. Sintaks fungsi glob() adalah seperti berikut: glob(corak, bendera) dengan corak mewakili rentetan corak yang akan dipadankan, yang boleh menjadi ungkapan kad bebas, seperti *.txt (fail yang sepadan berakhir dengan .txt), atau laluan Fail tertentu. flags ialah parameter pilihan yang digunakan untuk mengawal fungsi

Cari indeks permulaan dan akhir elemen dalam tatasusunan tidak diisih dalam C++ Cari indeks permulaan dan akhir elemen dalam tatasusunan tidak diisih dalam C++ Aug 29, 2023 am 10:17 AM

Dalam masalah ini, kita diberi tatasusunan aar[] yang mengandungi n nilai integer tidak diisih dan val integer. Tugas kita adalah untuk mencari indeks permulaan dan akhir sesuatu elemen dalam tatasusunan yang tidak diisih. Untuk kejadian elemen dalam tatasusunan, kami akan kembali, "indeks permulaan dan indeks akhir" (jika ditemui dua kali atau lebih dalam tatasusunan). "Indeks tunggal" (jika ditemui) "Elemen tidak wujud" jika tidak terdapat dalam tatasusunan. Mari kita ambil contoh untuk memahami masalah, Contoh 1Input:arr[]={2,1,5,4,6,2,3},val=2Output:startingindex=0,endingindex=5 menerangkan bahawa elemen 2 muncul dua kali , Kali pertama muncul pada indeks = 0, yang kedua

Bagaimana untuk mencari nombor siri pemacu keras komputer anda Bagaimana untuk mencari nombor siri pemacu keras komputer anda Feb 20, 2024 am 10:33 AM

Cara Menyemak Nombor Siri Pemacu Keras Komputer Dengan perkembangan teknologi komputer, pemacu keras komputer telah menjadi bahagian yang amat diperlukan dalam kehidupan kita. Sama ada ia menyimpan fail penting atau memasang sistem pengendalian dan perisian, anda perlu bergantung pada cakera keras untuk menyelesaikannya. Memahami beberapa maklumat asas tentang pemacu keras komputer, seperti nombor siri pemacu keras, boleh membantu kami mengurus dan menyelenggara sistem komputer dengan lebih baik. Jadi, bagaimana untuk menyemak nombor siri cakera keras komputer? Artikel ini akan memperkenalkan beberapa kaedah biasa. Kaedah 1: Gunakan alat baris arahan yang disertakan dengan sistem Windows sistem Windows

Bagaimana untuk menulis algoritma carian hash dalam Python? Bagaimana untuk menulis algoritma carian hash dalam Python? Sep 21, 2023 pm 02:37 PM

Bagaimana untuk menulis algoritma carian hash dalam Python? Algoritma carian hash, juga dikenali sebagai algoritma carian hash, ialah kaedah carian data berdasarkan jadual hash. Berbanding dengan algoritma carian tradisional seperti carian linear dan carian binari, algoritma carian hash mempunyai kecekapan carian yang lebih tinggi. Dalam Python, kita boleh menggunakan kamus untuk melaksanakan jadual hash dan kemudian melaksanakan carian hash. Idea asas algoritma carian hash adalah untuk menukar kata kunci untuk dicari kepada nilai indeks melalui fungsi hash, dan kemudian cari dalam jadual hash berdasarkan nilai indeks.

See all articles