ホームページ ウェブフロントエンド jsチュートリアル 正規表現の位置マッチング チュートリアル (コード付き)

正規表現の位置マッチング チュートリアル (コード付き)

Mar 29, 2018 pm 06:03 PM
位置 マッチ 表現

今回は正規表現位置マッチングのチュートリアル(コード付き)をお届けします。 正規表現チュートリアルの位置マッチングを使用する際の注意事項は何ですか?実際のケースを見てみましょう。

この記事の例では、正規表現チュートリアルの位置一致について説明します。参考として、次のようにみんなと共有してください。

注: すべての例では、正規表現の一致結果はソース テキストの [] の間に含まれています。一部の例は、Java を使用して実装されます。 Java 自体での正規表現の使用法については、対応する場所で説明します。すべての Java サンプルは JDK1.6.0_13 でテストされています。

1. 問題の紹介

テキスト内の特定の単語を一致させたい場合 (後で紹介する複数行モードを今のところ無視します)、次のようになります。

テキスト:

昨日は歴史、明日はミステリー、しかし今日は贈り物です。

正規表現:

is

結果:

昨日

【ある】 h【ある】物語、明日 【is】 a Mystery, but today 【is】 a gift. 分析: 元々は is という単語だけを一致させたかったのですが、他の単語に含まれる is とも一致しました。この問題を解決するには、境界区切り文字を使用します。つまり、正規表現内でいくつかの

メタキャラクター

を使用して、一致操作を実行する場所 (または境界) を示します。

2. 単語の境界

一般的に使用される境界は、修飾子 b によって指定される単語の境界で、単語の先頭と末尾を一致させるために使用されます。より正確には、単語の形成に使用できる文字 (文字、数字、アンダースコア、w に一致する文字) と単語の形成に使用できない文字 (W は文字に一致) の間の位置と一致します。 。前の例を見てみましょう:

テキスト:

昨日は歴史、明日は謎ですが、今日は贈り物です。

正規表現:

bisb

結果:

昨日

【は】歴史、明日【is】 a Mystery, but today 【is】 a gift.分析: 原文では、単語 is の前後にスペースがあり、パターン bisb と一致します (スペースは区切るために使用されます)言葉は登場人物の一人)。 History という単語には、その前後に h と t という 2 つの文字があるため、is も含まれます。これら 2 つの文字はいずれも b と一致しません。

単語の境界が一致しない場合は、B が使用されます。例:

テキスト:

色分けされたパスキーに表示されている9桁のIDを入力してください。

正規表現:

B-B

結果:

【9桁】を入力してください。

色分けされた ID [パスキー].分析: B-B は前後の単語境界ではないハイフンと一致します。 nine- のハイフンの前後にスペースはありません。数字とパスキーなので一致しますが、色分けされているハイフンの前後にスペースがあるため一致できません。

3.

文字列

境界単語の境界は、単語に関連する位置 (単語の先頭、単語の末尾、単語全体など) を一致させるために使用できます。文字列境界にも同様の目的がありますが、文字列に関連する位置 (文字列の先頭、文字列の末尾、文字列全体など) を一致させるために使用されます。文字列の境界を定義するために使用されるメタ文字は 2 つあります。1 つは文字列の先頭を定義するために使用される ^ で、もう 1 つは文字列の終わりを定義するために使用される $ です。

たとえば、XML ドキュメントの合法性をチェックしたい場合、合法な XML ドキュメントはすべて :

Text:

で始まります。

<?xml version="1.0" encoding="UTF-8"?>
<project basedir="." default="ear">
</project>
ログイン後にコピー

正则表达式:^\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);
}
ログイン後にコピー

正则表达式:(?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());
  }
}
ログイン後にコピー

输出结果如下:

//ダイアログ ボックスがモーダルであることを指定して、スーパー コンストラクターを呼び出します。
//ダイアログ ボックスのタイトルを設定します。
//「X」をクリックしてもウィンドウを閉じないよう指示します。
//素敵な境界線を持つメッセージを入力します。このダイアログ ボックス。
//ダイアログ ボックスのサイズをコンポーネントに合わせます。
//ダイアログ ボックスをアプリケーション上に中央に配置します。

5. 概要

正規表現は、任意の長さのテキスト ブロックを一致させるために使用できるだけでなく、次のようなテキスト ブロックと一致します。文字列内の特定の位置に出現します。 b は単語境界を指定するために使用されます (B はその逆です)。 ^ と $ は単語の境界を指定するために使用されます。 (?m) と一緒に使用すると、^ と $ は改行文字で始まるか終わる文字列にも一致します。部分式の使用については、次の記事で紹介します。

この記事の事例を読んだ後、あなたはその方法をマスターしたと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。

推奨書籍:

正規表現を使用して連続する数値を一致させる方法

正規表現を使用した最小限の一致を実装した開発経験

以上が正規表現の位置マッチング チュートリアル (コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホット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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Windows 11 で環境変数設定を有効にする方法の詳細 Windows 11 で環境変数設定を有効にする方法の詳細 Dec 30, 2023 pm 06:07 PM

環境変数機能は、システム内で設定プログラムを実行するために不可欠なツールですが、最新の win11 システムでは、設定方法がわからないユーザーもまだ多くいます。 win11 環境変数の開き方. ぜひ参加して操作方法を学びましょう。 win11 環境変数はどこですか: 1. まず「win+R」と入力して、実行ボックスを開きます。 2. 次に、コマンド「controlsystem」を入力します。 3. 開いたシステム情報インターフェイスで、左側のメニューから「システムの詳細設定」を選択します。 4. 次に、開いた「システムのプロパティ」ウィンドウの下部にある「環境変数」オプションを選択します。 5. 最後に、開いた環境変数で、必要に応じて関連する設定を行うことができます。

Win11の起動パスとそれを開く方法 Win11の起動パスとそれを開く方法 Jan 03, 2024 pm 11:13 PM

すべての Windows システムには起動パスがあり、そこにファイルやソフトウェアを追加すると、起動時にそのパスが開かれます。しかし、多くの友人は win11 の起動パスがどこにあるのか知りませんが、実際には、C ドライブ上の対応するフォルダーに入力するだけで済みます。 Win11 スタートアップ パス: 1. ダブルクリックして「この PC」を開きます。 2. パス「C:\ProgramData\Microsoft\Windows\StartMenu\Programs\Startup」をパス ボックスに直接貼り付けます。 3. ここに win11 の起動パスがあり、起動後にファイルを開きたい場合は、そのファイルを置くことができます。 4. このパスに従って入力できない場合は、非表示になっている可能性があります。

Windows10資格情報マネージャーはどこにありますか Windows10資格情報マネージャーはどこにありますか Jul 09, 2023 am 10:09 AM

資格情報マネージャーは、Web 資格情報と Windows 資格情報を管理するためにユーザーが使用する機能ですが、多くのユーザーは Windows 10 資格情報マネージャーがどこにあるのかまだ知りません。実際、資格情報マネージャーは操作パネル上にあります。コントロール パネルを開いた後、資格情報マネージャーが表示されるように、表示方法を小さいアイコンに変更することを忘れないでください。すべての種類の情報を表示するには、[表示] をクリックします。大量の を表示するには、アカウントのパスワードを入力する必要があります。 Windows 10 資格情報マネージャーはどこにありますか: 1. システムでコントロール パネルを開き、右上隅にある [表示] メソッドをクリックして、種類を小さなアイコンに変換します。 2. 小さなアイコンとして表示されたら、「証明書マネージャー」をクリックします。 3. 資格情報マネージャーに入ると、主に次の目的で使用される関連機能の概要が表示されます。

スタードーム鉄道クロッカー映画テレビパークの折り紙鳥の場所 スタードーム鉄道クロッカー映画テレビパークの折り紙鳥の場所 Mar 27, 2024 pm 11:51 PM

スター ドーム鉄道のクローカー 映画テレビ パークには、合計 20 羽の折り紙の鳥がいます。多くのプレイヤーは、クロッカー映画テレビ パークのどこに折り紙の鳥があるのか​​知りません。編集者は、誰もがわかるように、各折り紙の鳥の場所をまとめました。検索して、具体的な内容については、クローカー映画テレビ公園の折り紙の鳥の場所に関するこの最新のまとめをご覧ください。本海スタードーム鉄道のご案内:クルックムービーパーク1階2、クルックムービーパーク2階のオリガミバード スタードーム鉄道

pip インストール パッケージ ストレージの場所と構造を理解する pip インストール パッケージ ストレージの場所と構造を理解する Jan 18, 2024 am 08:23 AM

pip によってインストールされるパッケージの保存場所の詳細については、特定のコード サンプルが必要です。Pip は、Python 言語で一般的に使用されるパッケージ管理ツールです。Python パッケージのインストール、アップグレード、管理を簡単に行うために使用されます。 pip を使用してパッケージをインストールすると、対応するパッケージ ファイルが PyPI (Python Package Index) から自動的にダウンロードされ、指定された場所にインストールされます。では、pip によってインストールされたパッケージはどこに保存されるのでしょうか?これは、多くの Python 開発者が遭遇する問題です。この記事では、pip によってインストールされるパッケージの場所について詳しく説明し、次のことを提供します。

Go の正規表現の実践ガイド: 16 進数のカラー コードを一致させる方法 Go の正規表現の実践ガイド: 16 進数のカラー コードを一致させる方法 Jul 13, 2023 am 10:46 AM

Go 言語の正規表現実践ガイド: 16 進数のカラー コードを照合する方法 はじめに: 正規表現は、パターン マッチングと文字列の検索のための強力で柔軟なツールです。 Go 言語では、組み込みの正規表現パッケージ regexp を使用してこれらの操作を実装できます。この記事では、Go 言語で正規表現を使用して 16 進数のカラーコードを照合する方法を紹介します。正規表現パッケージのインポート まず、Go 言語の正規表現パッケージ regexp をインポートする必要があります。コードの先頭に次の import ステートメントを追加できます。

win11のシャットダウン場所 win11のシャットダウン場所 Jan 10, 2024 am 09:14 AM

コンピューターから長時間離れる場合は、コンピューターを保護するためにコンピューターをシャットダウンするのが最善です。では、win11 ではシャットダウンはどこにあるのでしょうか? 実際、一般的に言えば、スタート メニューを開くだけで次のことがわかります。その中にあるシャットダウンボタン。 Windows 11 をシャットダウンする場所: 回答: スタート メニューの電源ボタン内。 1. まず、下部のタスクバーにある「Windows ロゴ」をクリックして「スタートメニュー」を開きます。 2. 開いた後、図に示すように、右下隅に「電源」ボタンが見つかります。 3. 電源ボタンをクリックすると、「シャットダウン」が表示されるので、クリックしてシャットダウンします。 4. クラッシュなどの特別な状況によりコンピュータをシャットダウンできない場合は、コンピュータの「電源ボタン」を直接長押しして強制的にシャットダウンできます。

Apple のチェックイン機能の使用: iOS 17 のメッセージ アプリのガイド Apple のチェックイン機能の使用: iOS 17 のメッセージ アプリのガイド Sep 14, 2023 pm 09:13 PM

Apple の iOS 17 では、メッセージに、安全に帰宅したことを愛する人に知らせる新機能が追加されました。これをチェックインと呼びますが、その使い方は次のとおりです。暗くなってから歩いて帰宅しているときでも、早朝にランニングに出かけているときでも、Apple のメッセージ アプリで家族や友人にチェックインして、安全に帰宅したことを知らせることができます。到着すると、CheckIn が自動的に在宅時間を検出し、友人に通知します。通知を受けてチェックインが終了すると、あなたにも通知されます。何か予期せぬことが起こり、途中で遅れた場合でも、CheckTab はあなたが進んでいないことを認識し、ETA を延長するかどうかを尋ねてチェックインします。持っていない場合

See all articles