ホームページ >バックエンド開発 >Python チュートリアル >Python 正規表現を使用して中国語と英語の混合文字列を照合する方法

Python 正規表現を使用して中国語と英語の混合文字列を照合する方法

WBOY
WBOYオリジナル
2023-06-22 16:51:032458ブラウズ

正規表現は、文字列を迅速に照合して置換するのに役立つ強力なテキスト処理ツールです。中国語と英語が混在する文字列照合のシナリオでは、正規表現の使用が特に重要です。この記事では、Python 正規表現を使用して中国語と英語の混合文字列を照合する方法を紹介します。

1. 文字列エンコードの問題

中国語と英語の混合文字列を照合する前に、まず文字列エンコードの問題を理解する必要があります。 Python 3.x バージョンでは、文字列はデフォルトで Unicode エンコーディングを使用します。つまり、Python では通常、文字は Unicode エンコーディングで表されます。

実際のアプリケーションでは、歴史的な理由と技術的な制限により、他のエンコード タイプの文字列が頻繁に使用されます。たとえば、中国語環境で使用される文字列エンコーディングは通常、GBK または UTF-8 です。異なるエンコーディングの文字列を正しく処理するには、正規表現を使用する前に文字列を統一エンコーディングに変換する必要があります。

Python では、encode() メソッドを使用して、文字列を指定したエンコーディングのバイト文字列に変換できます (例:

str = "中文字符串"
encoded_str = str.encode('utf-8')

2)。基本的な正規表現構文

正規表現を使用して中国語と英語の混合文字列を照合する場合は、基本的な正規表現構文をマスターする必要があります。

  1. 文字クラス[]

角かっこは任意の文字と一致します。たとえば、次のようになります。

[abc]  匹配字符a或b或c
[a-z]  匹配小写字母a~z中的任意一个字符
[A-Z]  匹配大写字母A~Z中的任意一个字符
[0-9]  匹配数字0~9中的任意一个字符
  1. 一致位置

^ 文字列の先頭と一致します

$ 文字列の末尾と一致します

単語境界と一致します

  1. 修飾子
  • 前の文​​字と 0 回以上一致します
  • 前の文​​字と 1 回以上一致します

? 前の文字と 0 回以上一致します

{n,m} 前の文字に少なくとも n 回、最大 m 回一致します

{n,} 前の文字に少なくとも n 回一致します

{n} に一致します前の文字のみ n 回の文字

  1. 特殊文字

。改行文字を除く任意の文字と一致します。

エスケープ文字。次の文字をエスケープできます。特殊文字

| または、複数のパターンのいずれか 1 つの成功結果と一致する可能性があります

() グループ化、複数のパターンを組み合わせて、より複雑なパターンを形成できます

3. 中国語と英語が混在した文字列のマッチングの練習

次に、例を使用して、Python 正規表現を使用して中国語と英語が混在した文字列をマッチングする方法を示します。

  1. 英語の文字と一致する

まず、純粋な英語の文字を一致させる必要があります。正規表現では、a-zA-Z はすべての大文字と小文字を一致させることを意味するため、1 つ以上の英語の文字と一致させるには [a-zA-Z] のみを使用する必要があります。

たとえば、文字列「Hello World」内の英語の文字と一致させたい場合は、次のコードを使用できます:

import re

str = "Hello World"
pattern = '[a-zA-Z]+'
result = re.findall(pattern, str)

print(result)

出力結果は次のようになります: ["Hello", "World "]、2 つの英単語の一致に成功しました。

  1. 中国語の文字を一致させる

次に、中国語の文字を一致させましょう。中国語の文字の範囲は比較的広いため、Unicode エンコード範囲を使用して中国語の文字と一致させることができます。中国語の Unicode エンコード範囲は u4e00-u9fa5 であるため、[u4e00-u9fa5] を使用して 1 つ以上の中国語の文字と一致させることができます。

たとえば、文字列「Hello World」内の中国語の文字と一致させたい場合は、次のコードを使用できます:

import re

str = "你好世界"
pattern = '[u4e00-u9fa5]+'
result = re.findall(pattern, str)

print(result)

出力結果は次のようになります: ["Hello", "World "]、2 つの中国語単語が正常に一致しました。

  1. 中国語と英語の文字を照合する

最後に、中国語と英語の文字が混在する文字列を照合してみましょう。中国語と英語の文字列を照合する場合は、中国語と英語の両方の文字を考慮する必要があります。したがって、中国語の文字と英語の文字のパターンを組み合わせて、次の正規表現を作成できます:

pattern = '[a-zA-Z]+|[u4e00-u9fa5]+'

この正規表現では、| 記号を使用して 2 つのパターンを接続しており、1 つ以上の英語の単語または中国語に一致します。言葉。

たとえば、文字列「Hello Hello World World」内の中国語と英語の単語を一致させたい場合は、次のコードを使用できます:

import re

str = "Hello 你好 World 世界"
pattern = '[a-zA-Z]+|[u4e00-u9fa5]+'
result = re.findall(pattern, str)

print(result)

出力結果は次のようになります: ["Hello "、"Hello "、"World"、"世界"] は、中国語と英語の 4 つの単語を照合することに成功しました。

概要:

上記は、Python 正規表現を使用して中国語と英語の混合文字列を照合する方法です。上記の方法により、中国語と英語が混在する文字列マッチングの問題を簡単に解決し、より効率的かつ正確なテキスト処理を実行できます。

以上がPython 正規表現を使用して中国語と英語の混合文字列を照合する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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