この記事では、単一行モードも備えた JavaScript 正規表現を主に紹介します。必要な方は参照してください。
正規表現は、1970 年に Ken Thompson によって改良された QED エディターで最初に実装されました。正規表現は最も単純です。 " は、
上記の文は、1970 年の QED の公式文書からのもので、これは史上初の正規文書である可能性があります。
なぜそのようなルールがあるのでしょうか?これは、QED ではファイルを行単位で編集するため、行末の改行文字もこの行の内容に含まれるためです。たとえば、コード内の単一行コメントをすべて削除したい場合は、QED で次のコマンドを使用できます:
1,$s#//.*##
「.」が改行文字と一致する場合、改行文字も削除されます。その結果、これらの行が生成され、次の行がマージされますが、これは通常、私たちが望むものではないため、「.」が最初に発明されたときは、改行と一致しないように設計されていました。現在のオペレーティング システムにはテストできる QED コマンドはありませんが、VIM はまだ存在しており、同じ理由で VIM 内の「.」は改行文字と一致できません。
通常、ファイルの読み取りにはファイル全体を一度に読み取る必要がある Node とは異なり、Perl は、次のようにファイルを 1 行ずつ読み取る多くの Linux コマンドの伝統を継承しています:
while () {print $_}
_ の最後には改行文字もあります。また、「.」は改行文字と一致しないという QED のルールも当然継承されています。しかし、Perl は結局のところ、プログラミング言語であり、エディタではありません。その正規表現が一致させる必要があるオブジェクトは、単一行のテキストだけではなく、複数行のテキストでもあります。したがって、その正規表現では、「.」という要件があります。したがって、Perl は、「.」も改行と一致できるようにする通常の単一行モード /s を発明しました。
Perl で単一行モードを有効にするために使用される /s 修飾子の正式な説明は、「文字列を単一行として扱う」です。この「単一行」は、「.」とのみ一致します。複数行にまたがるモードではなく、通常モードでは、Perl は複数行の文字列を 1 行として扱い、改行文字をインライン文字として扱うため、「.」はそれらに一致します。もっと分かりやすく言うと、次の 3 行のテキスト
1 2 3
が「1n2n3n」の 1 行のテキストとして扱われます。これが単一行モードの意味です。
しかし、恐ろしいことに、同じ理由で (文字列変数には複数行のテキストを含めることができます)、Perl は複数行モードである /m 修飾子も発明しました。公式の説明では「文字列を複数行として扱う」となっています。このモードの JavaScript の規則は古くから存在します。ここでの「複数行」の意味は、デフォルトでは、文字列の途中にある改行文字の前後の位置と一致しないことです。 、文字列は常に 1 行のみであると見なされ、複数の行が開かれます。パターンは一致します。
つまり、単一行モードと複数行モードは、異なるメタ文字に対応するものであり、正規表現を初めて使用する人は、「単一行モード」と「複数行モード」に混乱するようです。対応しているように見えますが、実際には関係のない名詞によって混同されます。
その後、Ruby の作者は、「単一行モード」という通常の用語が適切に使用されていないと感じたのか、改行文字に一致する「.」のモードを「複数行モード」と呼びました。 * など 正規表現は複数の行に一致するため、修飾子でも /m を使用するのは当然です (Ruby はデフォルトで Perl の「複数行モード」を有効にするため、/m は使用されません)。怪我を侮辱し、さらに混乱を招きます。
その後、Python の作者も「単一行モード」という用語は避けるべきだと感じたので、「dotall」という新しい名前を付けました。これは、ドットがすべての文字に一致するという意味で、非常に良い名前です。以降 Java でもこの名前が使用されます。
上記は歴史を振り返り、シングルラインモードの由来を説明し、シングルラインモードの名前がうまく選ばれなかったことを説明しました。 V8 は最近、ステージ 3 ES プロポーザル github.com/mathiasbynens/es-regexp-dotall-flag を実装しました。このプロポーザルでは、JavaScript の規則性に対して /s 修飾子と dotAll 属性が導入されています。dotAll 属性は、Python と Java から学んだものです。修飾子は Perl から継承されており、/d などの新しい修飾子を作成する必要はありません。これにより、処理がさらに複雑になるだけです。 JavaScript における /s の具体的な効果は、「.」が、以前は一致しなかった 4 つの行終端文字 (n (改行)、r (キャリッジ リターン)、u2028 (行区切り)、u2029 (段落区切り) と一致できるようにすることです。
/foo/s.dotAll // true /^.{4}$/s.test("\n\r\u2028\u2029") // true
実際、これは非常に単純なことですが、JavaScript 以外の正規表現に触れたことのない一部の生徒は、この新しいモードを学ぶときに混乱するかもしれません。もう一度明確にしておきます: 複数行モード。は ^ と $ を制御し、単一行モードは "." のパフォーマンスを制御しますが、この 2 つの間には直接の関係はありません。
これまで一般的に使用されていた単一行モード [^] または [sS] は、完全に役に立たないわけではありません。たとえば、JavaScript 規則性を使用する一部のエディター (VS Code、Atom) では、使用できない可能性があります。単一回線モードを有効にします。ただし、エディターの通常の機能について言えば、JavaScript で実装されたエディターの通常の機能はまだ弱すぎます。たとえば、Sublime の場合、特定のモードを有効にすることができません。 Python の通常のコード)、通常のコード内で (?s) を使用して dotall モードをオンにします。たとえば、(?s)/*.+?*/ を使用すると、すべての複数行のコメントに一致します。
以上が単線モードとは何ですか? JavaScript 通常の単一行モードの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

開発環境におけるPythonとJavaScriptの両方の選択が重要です。 1)Pythonの開発環境には、Pycharm、Jupyternotebook、Anacondaが含まれます。これらは、データサイエンスと迅速なプロトタイピングに適しています。 2)JavaScriptの開発環境には、フロントエンドおよびバックエンド開発に適したnode.js、vscode、およびwebpackが含まれます。プロジェクトのニーズに応じて適切なツールを選択すると、開発効率とプロジェクトの成功率が向上する可能性があります。

はい、JavaScriptのエンジンコアはCで記述されています。1)C言語は、JavaScriptエンジンの開発に適した効率的なパフォーマンスと基礎となる制御を提供します。 2)V8エンジンを例にとると、そのコアはCで記述され、Cの効率とオブジェクト指向の特性を組み合わせて書かれています。3)JavaScriptエンジンの作業原理には、解析、コンパイル、実行が含まれ、C言語はこれらのプロセスで重要な役割を果たします。

JavaScriptは、Webページのインタラクティブ性とダイナミズムを向上させるため、現代のWebサイトの中心にあります。 1)ページを更新せずにコンテンツを変更できます。2)Domapiを介してWebページを操作する、3)アニメーションやドラッグアンドドロップなどの複雑なインタラクティブ効果、4)ユーザーエクスペリエンスを改善するためのパフォーマンスとベストプラクティスを最適化します。

CおよびJavaScriptは、WebAssemblyを介して相互運用性を実現します。 1)CコードはWebAssemblyモジュールにコンパイルされ、JavaScript環境に導入され、コンピューティングパワーが強化されます。 2)ゲーム開発では、Cは物理エンジンとグラフィックスレンダリングを処理し、JavaScriptはゲームロジックとユーザーインターフェイスを担当します。

JavaScriptは、Webサイト、モバイルアプリケーション、デスクトップアプリケーション、サーバー側のプログラミングで広く使用されています。 1)Webサイト開発では、JavaScriptはHTMLおよびCSSと一緒にDOMを運用して、JQueryやReactなどのフレームワークをサポートします。 2)ReactNativeおよびIonicを通じて、JavaScriptはクロスプラットフォームモバイルアプリケーションを開発するために使用されます。 3)電子フレームワークにより、JavaScriptはデスクトップアプリケーションを構築できます。 4)node.jsを使用すると、JavaScriptがサーバー側で実行され、高い並行リクエストをサポートします。

Pythonはデータサイエンスと自動化により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、データ処理とモデリングのためにNumpyやPandasなどのライブラリを使用して、データサイエンスと機械学習でうまく機能します。 2。Pythonは、自動化とスクリプトにおいて簡潔で効率的です。 3. JavaScriptはフロントエンド開発に不可欠であり、動的なWebページと単一ページアプリケーションの構築に使用されます。 4. JavaScriptは、node.jsを通じてバックエンド開発において役割を果たし、フルスタック開発をサポートします。

CとCは、主に通訳者とJITコンパイラを実装するために使用されるJavaScriptエンジンで重要な役割を果たします。 1)cは、JavaScriptソースコードを解析し、抽象的な構文ツリーを生成するために使用されます。 2)Cは、Bytecodeの生成と実行を担当します。 3)Cは、JITコンパイラを実装し、実行時にホットスポットコードを最適化およびコンパイルし、JavaScriptの実行効率を大幅に改善します。

現実世界でのJavaScriptのアプリケーションには、フロントエンドとバックエンドの開発が含まれます。 1)DOM操作とイベント処理を含むTODOリストアプリケーションを構築して、フロントエンドアプリケーションを表示します。 2)node.jsを介してRestfulapiを構築し、バックエンドアプリケーションをデモンストレーションします。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

WebStorm Mac版
便利なJavaScript開発ツール

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

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

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

ホットトピック









