検索
正規表現(文法)May 21, 2018 am 09:35 AM
通常表現文法

それでは正規表現の記事(文法のススメ)をお届けします。今からそれを皆さんと共有し、皆さんの参考にしてください。

正規表現の構造の概要

構造は

文字

x 文字 x
\ バックスラッシュ文字
と一致します

(?:X) ゼロ幅の正の先読みによる
(?=X) X の非キャプチャ グループ
(?!X) ?( ?>X) ----------------------------------



バックスラッシュ、エスケープ、引用符

バックスラッシュ文字 ('') は、上の表で定義されているように、エスケープされた構成体を参照するために使用されます。また、エスケープされていない構成体として解釈される他の文字を参照するためにも使用されます。したがって、式 \ は 1 つのバックスラッシュに一致し、{ は左括弧に一致します。 エスケープ構造を表さないアルファベット文字の前にバックスラッシュを使用するのはエラーです。バックスラッシュは、正規表現言語の将来の拡張用に予約されています。バックスラッシュは、文字がエスケープ構成の一部であるかどうかに関係なく、アルファベット以外の文字の前に使用できます。 Java ソース コード内の文字列内のバックスラッシュは、Java 言語仕様の要求に従って、Unicode エスケープまたはその他の文字エスケープとして解釈されます。したがって、正規表現が Java バイトコード コンパイラによって解釈されないように保護されていることを示すには、文字列リテラル内で 2 つのバックスラッシュを使用する必要があります。たとえば、正規表現として解釈される場合、文字列リテラル「b」は単一のバックスペース文字と一致し、「\b」は単語の境界と一致します。文字列リテラル "(hello)" は無効であり、コンパイル時エラーが発生します。文字列 (hello) と一致するには、文字列リテラル "\(hello\)" を使用する必要があります。

文字クラス

文字クラスは、他の文字クラス内に出現することができ、和集合演算子 (暗黙的) と交差演算子 (&&) を含めることができます。 Union 演算子は、少なくとも 1 つのオペランド クラス内のすべての文字を含むクラスを表します。交差演算子は、両方のオペランド クラスにあるすべての文字を含むクラスを表します。

文字クラス演算子の優先順位は、最高から最低の順に次のとおりです:

1 リテラル値エスケープ x

2 グループ化 [...]

3 範囲 a-z 4 Union [a-e ][i-u] 5 交差点 [a-z&&[aeiou]]

メタキャラクターのさまざまなセットは、実際には文字クラスの外側ではなく、文字クラスの内側にあることに注意してください。たとえば、正規表現 . は文字クラス内での特別な意味を失いますが、式 - はメタキャラクターを形成する範囲になります。



行末記号

行末記号は、一連の入力文字の行の終わりをマークする 1 つまたは 2 つの文字のシーケンスです。次のコードが行終端記号として認識されます: 改行 (ラインフィード) 文字 ('n')、 復帰文字 ("rn") に続く改行文字、 復帰文字のみ ('r' )、

次の行文字 ('u0085')、

行区切り文字 ('u2028')、または

段落区切り文字 ('u2029)。

UNIX_LINES モードが有効な場合、認識される行終了文字は改行文字のみです。

DOTALL フラグが指定されていない場合、正規表現は任意の文字 (行末文字を除く) と一致します。

デフォルトでは、正規表現 ^ と $ は行末記号を無視し、それぞれ入力シーケンス全体の先頭と末尾のみに一致します。 MULTILINE モードがアクティブな場合、^ マッチングは入力の先頭と行終端文字の後 (入力の末尾) で発生します。 MULTILINE モードの場合、$ は行終端記号の前または入力シーケンスの最後でのみ一致します。

グループとキャプチャ

キャプチャ グループには、左かっこを左から右に数えることによって番号を付けることができます。たとえば、式 ((A)(B(C))) には、そのようなグループが 4 つあります: 1 ((A)(B(C))) 2 A 3 (B(C))

4 (C)

グループ 0 は常に式全体を表します。


キャプチャ グループは、マッチングにおいて、これらのグループに一致する入力シーケンスのすべてのサブシーケンスが保存されるため、このように名前が付けられます。キャプチャされたサブシーケンスは、後で後方参照を介して式で使用することも、マッチング操作の完了後にマッチャーから取得することもできます。

グループに関連付けられたキャプチャ入力は、常にそのグループに最もよく一致するサブシーケンスです。量子化によりグループが再度計算される場合、2 番目の計算が失敗した場合、以前にキャプチャされた値 (存在する場合) が保持されます。たとえば、文字列「aba」と式 (a(b)?)+ が一致すると、セットされます。 2番目のグループを「b」にします。各一致の開始時に、キャプチャされた入力はすべて破棄されます。

(?) で始まるグループは純粋な非キャプチャ グループであり、テキストはキャプチャされず、グループの合計にはカウントされません。

上記は私があなたのためにまとめたものです。

関連記事:

JS でクロージャーが悪用される一般的なシナリオは何ですか? (画像とテキストのチュートリアル)

jsでオブジェクトをコピーするには? (画像とテキストのチュートリアル)

jsを使用してメッセージボードを実装する例(コードが提供されます)

以上が正規表現(文法)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
如何快速把你的 Python 代码变为 API如何快速把你的 Python 代码变为 APIApr 14, 2023 pm 06:28 PM

提到API开发,你可能会想到DjangoRESTFramework,Flask,FastAPI,没错,它们完全可以用来编写API,不过,今天分享的这个框架可以让你更快把现有的函数转化为API,它就是Sanic。Sanic简介Sanic[1],是Python3.7+Web服务器和Web框架,旨在提高性能。它允许使用Python3.5中添加的async/await语法,这可以有效避免阻塞从而达到提升响应速度的目的。Sanic致力于提供一种简单且快速,集创建和启动于一体的方法

PHP8.0中新的类型别名语法PHP8.0中新的类型别名语法May 14, 2023 pm 02:21 PM

随着PHP8.0的发布,新增了一种类型别名语法,使得使用自定义的类型变得更加容易。在本文中,我们将深入了解这种新的语法,以及它对开发人员的影响。什么是类型别名?在PHP中,类型别名本质上是一个变量,它引用另一个类型的名称。这个变量可以像其他类型一样使用,并在代码中的任何地方声明。这种语法的主要作用是为常用的类型定义自定义别名,使得代码更加易于阅读和理解。

Go语言与JS的联系与区别Go语言与JS的联系与区别Mar 29, 2024 am 11:15 AM

Go语言与JS的联系与区别Go语言(也称为Golang)和JavaScript(JS)都是当前流行的编程语言,它们在某些方面有联系,在其他方面又有明显的区别。本篇文章将探讨Go语言与JavaScript之间的联系与区别,同时提供具体的代码示例来帮助读者更好地理解这两种编程语言。联系:都是跨平台的Go语言和JavaScript都是跨平台的,可以在不同的操作系统

如何解决Python的表达式语法错误?如何解决Python的表达式语法错误?Jun 24, 2023 pm 05:04 PM

Python作为一种高级编程语言,易于学习和使用。一旦需要编写Python程序时,无法避免地遇到语法错误,表达式语法错误是常见的一种。在本文中,我们将讨论如何解决Python的表达式语法错误。表达式语法错误是Python中最常见的错误之一,它通常是由于错误的使用语法或缺少必要组件而导致的。在Python中,表达式通常由数字、字符串、变量和运算符组成。最常见的

PHP8.0中的父类调用语法PHP8.0中的父类调用语法May 14, 2023 pm 01:00 PM

PHP是一种广泛应用于Web开发的服务器端脚本语言,而PHP8.0版本中引入了一种新的父类调用语法,让面向对象编程更加方便和简洁。在PHP中,我们可以通过继承的方式创建一个父类和一个或多个子类。子类可以继承父类的属性和方法,并可以通过重写父类的方法来修改或扩展其功能。在普通的PHP继承中,如果我们想在子类中调用父类的方法,需要使用parent关键字来引用父

学会使用CSS选择器的基本语法学会使用CSS选择器的基本语法Jan 13, 2024 am 11:44 AM

掌握基本的CSS选择器语法,需要具体代码示例CSS选择器是前端开发中非常重要的一部分,它可以用来选择和修改HTML文档的各个元素。掌握基本的CSS选择器语法对于编写高效的样式表是至关重要的。本文将介绍一些常见的CSS选择器以及对应的代码示例。元素选择器元素选择器是最基本的选择器,可以通过元素的标签名来选择对应的元素。例如,要选择所有的段落(p元素),可以使用

乘方运算在C语言中的用法及语法乘方运算在C语言中的用法及语法Feb 18, 2024 pm 04:05 PM

C语言中乘方运算的语法和用法简介:在C语言中,乘方运算(poweroperation)是一种常见的数学运算,它用于计算一个数的幂。在C语言中,我们可以使用标准库函数或者自定义函数来实现乘方运算。本文将详细介绍C语言中乘方运算的语法和用法,并提供具体的代码示例。一、使用math.h中的pow()函数在C语言中,math.h标准库中提供了pow()函数,用于执

在 Python 3.10 中使用“match...case”在 Python 3.10 中使用“match...case”Apr 12, 2023 am 09:25 AM

“match...case”语法类似于其他面向对象语言中的 switch 语句,它旨在使结构与 case 的匹配更容易。让我们开始.语法“match...case”语法如下:def greeting(message): match message.split(): case ["hello"]: print("this message says hello") case ["hello", name]: print("

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境