#正規表現とは何ですか?
正規表現とは、特殊な文字と記号のグループです。テキスト。テキストから必要な形式を満たす文を検索するために使用できます。正規表現は、スタイルの本文文字列内の文字列を左から右に照合する場合に使用します。 「正規表現」という用語は発音が少し難しいため、「正規表現」または「正規表現」という省略語がよく使用されます。 正規表現を使用すると、基本文字列からの特定の一致パターンに従ってテキスト内の文字列を置換したり、フォームを検証したり、文字列を抽出したりできます。 アプリケーションを作成していて、ユーザーを許可するユーザー命名規則を設定するとします。名前には文字、数字、アンダースコア、ハイフンを含めて、名前が見苦しくならないように文字数を制限してください。 ユーザー名を確認するには、次の正規表現を使用します:
john_doe、
jo-hn_doe、を受け入れることができます。
john12_as。
ただし、
Jo には一致しません。大文字が含まれており、短すぎるためです。
Directory
2.8.2 $4.4 ?
##1. 基本的なマッチング 実際の正規表現 これは、検索を実行するときに使用される形式であり、次の形式を組み合わせたものです。文字と数字。 たとえば、正規表現
theは、文字 t で始まり、
h、e というルールを表します。
"the" => The fat cat sat on the mat.
正規表現123
は文字列123
と一致します。入力された正規表現と文字ごとに一致します。比較を行います。 .
正規表現では大文字と小文字が区別されるため、The
は the
.
"the" => The fat cat sat on the mat.
オンライン テスト ツール # とは一致しません。
正規表現は主にメタキャラクターに依存します。 メタキャラクターは文字通りの意味を表すのではなく、すべて特別な意味を持っています。一部のメタキャラクターは、角かっこで書かれた場合に特別な意味を持ちます。以下は、いくつかのメタキャラクターの紹介です:
説明 | |||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ピリオドは、改行を除く任意の 1 文字に一致します。 | |||||||||||||||||||||||||||||||||||||||||||||||
文字タイプ。角括弧内の任意の文字と一致します。 | |||||||||||||||||||||||||||||||||||||||||||||||
負の文字タイプ。角括弧以外の任意の文字と一致します。括弧 | |||||||||||||||||||||||||||||||||||||||||||||||
? | |||||||||||||||||||||||||||||||||||||||||||||||
{n, m} | |||||||||||||||||||||||||||||||||||||||||||||||
(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. フラグ
フラグは、式の検索結果を変更するために使用できるため、パターン修飾子とも呼ばれます。 これらのフラグは任意に組み合わせて使用でき、正規表現全体の一部となります。
# フラグ | 説明 |
---|---|
i | 大文字と小文字を無視します。 |
g | グローバル検索。 |
m | 複数行: アンカー メタ文字
#$ 作業範囲は各行の先頭です。 |

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター
