什麼是正規表示式?
#正規表示式是一組由字母和符號組成的特殊文字, 它可以用來從文字中找出滿足你想要的格式的句子.
一個正則表達式是在一個主體字串中從左到右匹配字串時的一種樣式. "Regular expression"這個字比較拗口, 我們常使用縮寫的術語"regex"或"regexp". 正規表示式可以從一個基礎字串中根據一定的匹配模式替換文本中的字符串、驗證表單、提取字符串等等.
想像你正在寫一個應用, 然後你想設定一個使用者命名的規則, 讓使用者名稱包含字元,數字,底線和連字號,以及限製字元的數,好讓名字看起來沒那麼醜. 我們使用以下正規表示式來驗證一個使用者名稱:
以上的正規表示式可以接受john_doe
, jo-hn_doe
, john12_as
.
但不符合Jo
, 因為它包含了大寫的字母而且太短了.
#目錄
# 1 * 號2.3.2 號2.3.3 ? 號## #」 ##2.7 轉碼特殊字元
#2.8.2 $ 號3. 簡寫字元集4. 零寬度斷言(前後預查)4.1 ?=... 正先行斷言4.2 ?!... 負先行斷言# #5.標誌
#1. 基本符合
正規表示式其實就是在執行搜尋時的格式, 它是由一些字母和數字組合而成.
例如: 一個正規表示式
the
"the" => The fat cat sat on the mat.
正規表示式123
符合字串123
. 它逐個字元的與輸入的正規表示式做比較.
正則表達式是大小寫敏感的, 所以The
不會匹配the
.
"the" => The fat cat sat on the mat.
2. 元字元
正規表示式主要依賴於元字元. 元字符不代表他們本身的字面意思, 他們都有特殊的含義. 一些元字符寫在方括號中的時候有一些特殊的意思. 以下是一些元字符的介紹:
元字元 | 描述 |
---|---|
#. | 句號符合任意單一字元除了換行符號. |
[ ] | 字元種類. 匹配方括號內的任意字元. |
否定的字元種類. 符合除了方括號裡的任意字元 | |
符合>=0個重複的在*號之前的字元. | |
符合>=1個重複的號碼前面的字元. | |
#標記?之前的字元為可選. | |
匹配num個大括號之前的字元(n | |
字元集, 符合與xyz 完全相等的字串. | |
或運算子,匹配符號前後的字元. | |
# 轉義字元,用於匹配一些保留的字元 | [ ] ( ) { } . * ? ^ $ \ |
|
#從開始行開始符合. | |
從末端開始符合. |
简写 | 描述 |
---|---|
. | 除换行符外的所有字符 |
\w | 匹配所有字母数字, 等同于 [a-zA-Z0-9_]
|
\W | 匹配所有非字母数字, 即符号, 等同于: [^\w]
|
\d | 匹配数字: [0-9]
|
\D | 匹配非数字: [^\d]
|
\s | 匹配所有空格字符, 等同于: [\t\n\f\r\p{Z}]
|
\S | 匹配所有非空格字符: [^\s]
|
\f | 匹配一个换页符 |
\n | 匹配一个换行符 |
\r | 匹配一个回车符 |
\t | 匹配一个制表符 |
\v | 匹配一个垂直制表符 |
\p | 匹配 CR/LF (等同于 \r\n ),用来匹配 DOS 行终止符 |
4. 零宽度断言(前后预查)
先行断言和后发断言都属于非捕获簇(不捕获文本 ,也不针对组合计进行计数). 先行断言用于判断所匹配的格式是否在另一个确定的格式之前, 匹配结果不包含该确定格式(仅作为约束).
例如, 我们想要获得所有跟在 $
符号后的数字, 我们可以使用正后发断言 (?.
这个表达式匹配 <code>$
开头, 之后跟着 0,1,2,3,4,5,6,7,8,9,.
这些字符可以出现大于等于 0 次.
零宽度断言如下:
符号 | 描述 |
---|---|
?= | 正先行断言-存在 |
?! | 负先行断言-排除 |
? | 正后发断言-存在 |
? | 负后发断言-排除 |
?=...
正先行断言
4.1 ?=...
正先行断言, 表示第一部分表达式之后必须跟着 ?=...
定义的表达式.
返回结果只包含满足匹配条件的第一部分表达式.
定义一个正先行断言要使用 ()
. 在括号内部使用一个问号和等号: (?=...)
.
正先行断言的内容写在括号中的等号后面.
例如, 表达式 (T|t)he(?=\sfat)
匹配 The
和 the
, 在括号中我们又定义了正先行断言 (?=\sfat)
,即 The
和 the
后面紧跟着 (空格)fat
.
"(T|t)he(?=\sfat)" => The fat cat sat on the mat.
?!...
负先行断言
4.2 负先行断言 ?!
用于筛选所有匹配结果, 筛选条件为 其后不跟随着断言中定义的格式.正先行断言
定义和 负先行断言
一样, 区别就是 =
替换成 !
也就是 (?!...)
.
表达式 (T|t)he(?!\sfat)
匹配 The
和 the
, 且其后不跟着 (空格)fat
.
"(T|t)he(?!\sfat)" => The fat cat sat on the mat.
? 正后发断言
4.3 正后发断言 记作(? 用于筛选所有匹配结果, 筛选条件为 其前跟随着断言中定义的格式.
例如, 表达式 <code>(? 匹配 <code>fat
和 mat
, 且其前跟着 The
或 the
.
"(?<=(T|t)he\s)(fat|mat)" => The fat cat sat on the mat.
? 负后发断言
4.4 负后发断言 记作 (? 用于筛选所有匹配结果, 筛选条件为 其前不跟随着断言中定义的格式.
例如, 表达式 <code>(? 匹配 <code>cat
, 且其前不跟着 The
或 the
.
"(?<!(T|t)he\s)(cat)" => The cat sat on cat.
5. 標誌
標誌也叫模式修正子, 因為它可以用來修改表達式的搜尋結果. 這些標誌可以任意的組合使用, 它也是整個正規表示式的一部分.
#標誌 | ##描述|
---|---|
忽略大小寫. | |
全域搜尋. | |
多行的: 錨點元字元 | ^ $# 工作範圍在每行的起始.
|

两种去除方法:1、利用preg_replace()执行正则表达式搜索所有大写字母并将其替换为空字符即可,语法“preg_replace('/[A-Z]/','',$str)”。2、利用preg_filter()执行正则表达式搜索所有大写字母并将其替换为空字符即可,语法“preg_filter('/[A-Z]/','',$str)”。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

随着数据量的不断增大,正则表达式匹配成为了程序中常用的操作之一。而在Go语言中,由于其天然的并行ism,以及与底层系统的交互性和高效性,使得Go语言的正则表达式匹配极具优势。那么如何使用Go语言编写高性能的正则表达式匹配呢?一、了解正则表达式在使用正则表达式前,我们首先需要了解正则表达式,了解其基本语法规则以及常用的匹配字符,使我们能够在编写正则表达式时更加

两种方法:1、用preg_replace(),可执行正则表达式的搜索和替换,只需将字符串中匹配的字符替换为空字符即可,语法“preg_replace(正则, "", $str)”。2、用preg_match_all(),可搜索字符串中所有和正则表达式匹配的结果,会将每次的匹配结果放在一个数组$array中,语法“preg_match_all(正则,$str,$array);”。

php中可用preg_match_all()配合正则表达式过滤字符串,只获取中文字符;语法“preg_match_all("/[\x{4e00}-\x{9fff}]+/u","$str",$arr);”,会将匹配字符存入“$arr”数组中。

在javascript中,可以使用replace()函数配合正则表达式“/[u4e00-u9fa5|,]+/ig”来查找字符串中的所有非汉字字符,并将其替换为其他指定值,语法“字符串对象.replace(/[u4e00-u9fa5|,]+/ig,'指定替换值')”。

Java语言正则表达式的使用方法正则表达式是一种强大的文本处理工具,可以用来匹配和验证文本。在Java语言中,也可以使用正则表达式来实现字符串的匹配和处理。本文将介绍Java语言正则表达式的使用方法,涵盖正则表达式的基础知识,常用的正则表达式语法,以及在Java程序中使用正则表达式的方法。一、基础知识正则表达式是什么?正则表达式是一种文本模式,用来描述一组字

在PHP开发中,正则表达式是非常重要的工具,用于匹配、查找和替换文本中的特定字符串。然而,编写高效的正则表达式并不是一件易事,需要开发者具备一定的技巧和经验。下面是一些可以帮助您编写高效正则表达式的技巧:1.尽可能使用非贪婪匹配默认情况下,正则表达式是贪婪的,即它们将尽可能匹配更多的文本。在某些情况下,可能需要使用非贪婪匹配来避免这种情况。非贪婪匹配使用"

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

Dreamweaver Mac版
視覺化網頁開發工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

記事本++7.3.1
好用且免費的程式碼編輯器