Rumah hujung hadapan web tutorial js 正则表达式教程的位置匹配教程(附代码)

正则表达式教程的位置匹配教程(附代码)

Mar 29, 2018 pm 06:03 PM
Lokasi perlawanan ungkapan

这次给大家带来正则表达式教程的位置匹配教程(附代码),使用正则表达式教程位置匹配的注意事项有哪些,下面就是实战案例,一起来看一下。

本文实例讲述了正则表达式教程之位置匹配。分享给大家供大家参考,具体如下:

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

一、问题引入

如果想匹配一段文本中的某个单词(暂不考虑多行模式,将在后面介绍),我们可能会像下面这样:

文本:Yesterday is history, tomorrow is a mystery, but today is a gift.

正则表达式:is

结果:Yesterday 【is】 h【is】tory, tomorrow 【is】 a mystery, but today 【is】 a gift.

分析:本来只是要匹配单词is,但把其他单词中包含的is也匹配出来了。要解决这个问题,使用边界界定符,也就是在正则表达式里用一些元字符来表明我们想让匹配操作在什么位置(或边界)发生。

二、单词边界

一种常用的边界是由限定符\b指定的单词边界,\b用来匹配单词的开始和结尾。更确切地说,它是匹配这样一个位置,这个位置位于一个能够用来构成单词的字符(字母、数字、下划线,也就是与\w相匹配的字符)和一个不能用来构成单词的字符(与\W相匹配的字符)之间。来看前面的例子:

文本:Yesterday is history, tomorrow is a mystery, but today is a gift.

正则表达式:\bis\b

结果:Yesterday 【is】 history, tomorrow 【is】 a mystery, but today 【is】 a gift.

分析:在原始文本中,单词is的前后都有一个空格,而这与模式\bis\b匹配(空格是用来分隔单词的字符之一)。而单词history中也包含了is,因为它的前后分别有一个字符h和t,这两个字符都不能与\b匹配。

如果不匹配一个单词边界,则使用\B。如:

文本:Please enter the nine-digit id as it appears on your color - coded pass-key.

正则表达式:\B-\B

结果:Please enter the 【nine-digit】 id as it appears on your color - coded 【pass-key】.

分析:\B-\B将匹配一个前后都不是单词边界的连字符,nine-digit和pass-key中连字符前后都没有空格,所以能够匹配,而color - coded中连字符前后都有空格,所以不能匹配。

三、字符串边界

单词边界可以用来进行与单词有关的位置匹配(单词开头、结束、整个单词等等)。而字符串边界也有着类似的用途,只不过是用来进行与字符串有关的位置匹配(字符串开头、结束、整个字符串等等)。用来定义字符串边界的元字符有两个:一个是用来定义字符串开头的^,另一个是用来定义字符串结尾的$。

比如要检查一个XML文档的合法性,合法的XML文档都以这样形式开头:

文本:

<?xml version="1.0" encoding="UTF-8"?>
<project basedir="." default="ear">
</project>
Salin selepas log masuk

正则表达式:^\s*<\?xml.*?\?>

结果:



分析:^匹配一个字符串的开头位置,所以^\s*将匹配一个字符串的开头位置和随后的零个或多个空白字符,因为标签前面允许有空格、制表符、换行符等空白字符。

$元字符符的用法除了位置上的差异外,与^用法完全一样。比如,检查一个html页面是否以结尾,可以用模式:\s*$

四、多行匹配模式

正则表达式可以通过一些特殊的元字符来改变另外一些元字符的行为。可以通过(?m) 来启用多行匹配模式。多行匹配模式将使得正则表达式引擎把行分隔符当做一个字符串分隔符来对待。在多行匹配模式下,^不仅匹配正常的字符串开头,还将匹配行分隔符(换行符)后面的开始位置,$不仅匹配正常的字符串结尾,还将匹配行分隔符(换行符)后面的结束位置。

在使用时,(?m)必须出现在整个模式的最前面。比如,通过正则表达式把一段java代码中的单行注释(以//开始)内容全部找出来。

文本:

publicDownloadingDialog(Frame parent){
     //Callsuper constructor, specifying that dialog box is modal.
     super(parent,true);
     //Setdialog box title.
     setTitle("E-mailClient");
     //Instructwindow not to close when the "X" is clicked.
     setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
     //Puta message with a nice border in this dialog box.
     JPanelcontentPanel = new JPanel();
     contentPanel.setBorder(BorderFactory.createEmptyBorder(5,5, 5, 5));
     contentPanel.add(newJLabel("Downloading messages..."));
     setContentPane(contentPanel);
     //Sizedialog box to components.
     pack();
     //Centerdialog box over application.
     setLocationRelativeTo(parent);
}
Salin selepas log masuk

正则表达式:(?m)^\s*//.*$

结果:

         publicDownloadingDialog(Frame parent){
【              //Call superconstructor, specifying that dialog box is modal.】                   super(parent,true);
【              //Set dialog boxtitle.】                   setTitle("E-mailClient");
【              //Instruct windownot to close when the "X" is clicked.】                   setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
【              //Put a messagewith a nice border in this dialog box.】                   JPanelcontentPanel = new JPanel();
                   contentPanel.setBorder(BorderFactory.createEmptyBorder(5,5, 5, 5));
                   contentPanel.add(newJLabel("Downloading messages..."));
                   setContentPane(contentPanel);
【              //Size dialog boxto components.】                   pack();
【              //Center dialogbox over application.】                   setLocationRelativeTo(parent);
         }

分析:^\s*//.*$将匹配一个字符串的开始,然后是任意多个空白字符,再后面是//,再往后是任意文本,最后是一个字符串的结束。不过这个模式只能找出第一条注释,加上(?m)前缀后,将把换行符视为一个字符串分隔符,这样就可以把每一行注释匹配出来了。

java代码实现如下(文本保存在text.txt文件中):

public static String getTextFromFile(String path) throws Exception{
  BufferedReader br = new BufferedReader(new FileReader(new File(path)));
  StringBuilder sb = new StringBuilder();
  char[] cbuf = new char[1024];
  int len = 0;
  while(br.ready() && (len = br.read(cbuf)) > 0){
    br.read(cbuf);
    sb.append(cbuf, 0, len);
  }
    br.close();
  return sb.toString();
}
public static void multilineMatch() throws Exception{
  String text = getTextFromFile("E:/text.txt");
  String regex = "(?m)^\\s*//.*$";
  Matcher m = Pattern.compile(regex).matcher(text);
  while(m.find()){
    System.out.println(m.group());
  }
}
Salin selepas log masuk

输出结果如下:

//Call super constructor, specifying that dialog box is modal.
//Set dialog box title.
//Instruct window not to close when the "X" is clicked.
//Put a message with a nice border in this dialog box.
//Size dialog box to components.
//Center dialog box over application.

五、小结

正则表达式不仅可以用来匹配任意长度的文本块,还可以用来匹配出现在字符串中特定位置的文本。\b用来指定一个单词边界(\B刚好相反)。^和$用来指定单词边界。如果与(?m)配合使用,^和$还将匹配在一个换行符处开头或结尾的字符串。在接下来的文章中将介绍子表达式的使用。

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

正则怎么匹配连续数字

正则实现最小匹配的开发经验

Atas ialah kandungan terperinci 正则表达式教程的位置匹配教程(附代码). 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

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

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)

Butiran tentang cara menghidupkan tetapan pembolehubah persekitaran pada Windows 11 Butiran tentang cara menghidupkan tetapan pembolehubah persekitaran pada Windows 11 Dec 30, 2023 pm 06:07 PM

Fungsi pembolehubah persekitaran adalah alat penting untuk menjalankan program konfigurasi dalam sistem Walau bagaimanapun, dalam sistem win11 terkini, masih terdapat ramai pengguna yang tidak tahu bagaimana untuk menetapkan dan membukanya lokasi pembukaan pembolehubah persekitaran win11 Marilah sertai kami. Di manakah pembolehubah persekitaran win11: 1. Mula-mula masukkan "win+R" untuk membuka kotak larian. 2. Kemudian masukkan arahan: controlsystem. 3. Dalam antara muka maklumat sistem yang terbuka, pilih "Tetapan Sistem Lanjutan" dari menu kiri. 4. Kemudian pilih pilihan "Pembolehubah Persekitaran" di bahagian bawah tetingkap "System Properties" yang terbuka. 5. Akhir sekali, dalam pembolehubah persekitaran yang dibuka, anda boleh membuat tetapan yang berkaitan mengikut keperluan anda.

Laluan permulaan Win11 dan cara membukanya Laluan permulaan Win11 dan cara membukanya Jan 03, 2024 pm 11:13 PM

Setiap sistem Windows mempunyai laluan permulaan Jika anda menambah fail atau perisian padanya, ia akan dibuka pada masa but. Walau bagaimanapun, ramai rakan tidak tahu di mana laluan permulaan win11 sebenarnya, kita hanya perlu memasukkan folder yang sepadan pada pemacu C. Laluan permulaan Win11: 1. Klik dua kali untuk membuka "PC ini" 2. Tampal terus laluan "C:\ProgramData\Microsoft\Windows\StartMenu\Programs\Startup" ke dalam kotak laluan. 3. Berikut ialah laluan permulaan win11 Jika kita ingin membuka fail selepas boot, kita boleh memasukkan fail tersebut. 4. Jika anda tidak boleh masuk mengikut laluan ini, ia mungkin tersembunyi.

di manakah pengurus kelayakan windows10 di manakah pengurus kelayakan windows10 Jul 09, 2023 am 10:09 AM

Pengurus Kredensial ialah fungsi yang digunakan oleh pengguna untuk mengurus bukti kelayakan web dan bukti kelayakan Windows, tetapi ramai pengguna masih tidak tahu di mana Pengurus Kredensial Windows 10 berada. Sebenarnya, pengurus kelayakan berada di panel operasi Selepas membuka panel kawalan, ingat untuk menukar kaedah tontonan kepada ikon kecil, supaya anda boleh melihat pengurus kelayakan untuk melihat sejumlah besar , anda perlu memasukkan kata laluan akaun. Di manakah Pengurus Kredensial Windows 10: 1. Buka Panel Kawalan dalam sistem, klik kaedah Lihat di penjuru kanan sebelah atas, dan tukar jenis kepada ikon kecil. 2. Selepas melihatnya sebagai ikon kecil, klik "Pengurus Sijil". 3. Selepas memasukkan pengurus kelayakan, anda boleh melihat pengenalan kepada fungsi yang berkaitan, yang digunakan terutamanya untuk

Lokasi Burung Origami di Taman Filem dan Televisyen Stardome Railway Crocker Lokasi Burung Origami di Taman Filem dan Televisyen Stardome Railway Crocker Mar 27, 2024 pm 11:51 PM

Terdapat sejumlah 20 burung origami di Taman Filem dan Televisyen Croaker di Star Dome Railway Ramai pemain tidak tahu di mana burung origami berada di Taman Filem dan Televisyen Crocker. Editor telah meringkaskan lokasi setiap burung origami untuk membantu semua orang . Carinya, dan lihat ringkasan terkini lokasi burung origami di Taman Filem dan Televisyen Croaker untuk kandungan tertentu. Panduan ke Kereta Api Kubah Bintang Honkai: Burung Origami di Crook Movie Park Lokasi 1, Crook Movie Park Tingkat 1 2 dan Crook Movie Park Tingkat 2 Star Dome Railway

Fahami lokasi dan struktur penyimpanan pakej pemasangan pip Fahami lokasi dan struktur penyimpanan pakej pemasangan pip Jan 18, 2024 am 08:23 AM

Untuk mengetahui lebih lanjut tentang lokasi storan pakej yang dipasang oleh pip, anda memerlukan contoh kod khusus Pip ialah alat pengurusan pakej yang biasa digunakan dalam bahasa Python Ia digunakan untuk memasang, meningkatkan dan mengurus pakej Python dengan mudah. Apabila menggunakan pip untuk memasang pakej, ia akan memuat turun fail pakej yang sepadan secara automatik daripada PyPI (Python Package Index) dan memasangnya ke lokasi yang ditentukan. Jadi, di manakah pakej yang dipasang oleh pip disimpan? Ini adalah masalah yang akan dihadapi oleh ramai pembangun Python. Artikel ini akan menyelidiki lokasi pakej yang dipasang oleh pip dan menyediakan

Panduan Praktikal untuk Ungkapan Biasa dalam Go: Cara Memadankan Kod Warna Heksadesimal Panduan Praktikal untuk Ungkapan Biasa dalam Go: Cara Memadankan Kod Warna Heksadesimal Jul 13, 2023 am 10:46 AM

Go Language Panduan Praktikal Ungkapan Biasa: Cara Memadankan Kod Warna Heksadesimal Pengenalan: Ungkapan biasa ialah alat yang berkuasa dan fleksibel untuk padanan corak dan mencari rentetan. Dalam bahasa Go, kita boleh menggunakan pakej ekspresi biasa terbina dalam regexp untuk melaksanakan operasi ini. Artikel ini akan memperkenalkan cara menggunakan ungkapan biasa untuk memadankan kod warna heksadesimal dalam bahasa Go. Mengimport pakej ungkapan biasa Pertama, kita perlu mengimport pakej ekspresi biasa regexp bahasa Go. Anda boleh menambah pernyataan import berikut pada permulaan kod: i

lokasi penutupan win11 lokasi penutupan win11 Jan 10, 2024 am 09:14 AM

Jika kita akan berada jauh dari komputer untuk masa yang lama, adalah lebih baik untuk menutup komputer untuk melindunginya Jadi di manakah penutupan dalam win11 Sebenarnya, secara umum, buka menu mula dan anda boleh mencari butang tutup di dalamnya. Di mana untuk menutup Windows 11: Jawapan: Dalam butang kuasa menu mula. 1. Mula-mula, kami klik "Logo Windows" pada bar tugas bawah untuk membuka "Menu Mula" 2. Selepas membuka, anda boleh mencari butang "Kuasa" di sudut kanan bawah, seperti yang ditunjukkan dalam rajah. 3. Selepas mengklik butang kuasa, anda akan melihat "Shutdown", klik padanya untuk menutup. 4. Jika komputer tidak dapat dimatikan disebabkan oleh keadaan khusus seperti ranap sistem, anda boleh terus menekan dan menahan "butang kuasa" pada komputer untuk menutup paksa.

Menggunakan Ciri Daftar Masuk Apple: Panduan untuk Apl Mesej dalam iOS 17 Menggunakan Ciri Daftar Masuk Apple: Panduan untuk Apl Mesej dalam iOS 17 Sep 14, 2023 pm 09:13 PM

Apple dalam iOS 17 telah menambah ciri baharu dalam Messages untuk memberitahu orang tersayang apabila anda pulang dengan selamat. Ia dipanggil daftar masuk, dan inilah cara anda menggunakannya. Sama ada anda berjalan kaki pulang ke rumah selepas gelap atau pergi berlari awal pagi, anda boleh mula mendaftar masuk dengan keluarga atau rakan dalam apl Mesej Apple untuk memberitahu mereka apabila anda selamat di rumah. Semasa ketibaan anda, Daftar Masuk secara automatik mengesan apabila anda berada di rumah dan memberitahu rakan anda. Apabila mereka menerima makluman dan daftar masuk telah tamat, anda juga akan dimaklumkan. Jika sesuatu yang tidak dijangka berlaku dan anda terlewat dalam perjalanan, CheckTab akan menyedari bahawa anda tidak membuat kemajuan dan mendaftar masuk dengan anda, bertanya sama ada anda ingin meningkatkan ETA anda. jika anda tidak mempunyai

See all articles