ホームページ  >  記事  >  バックエンド開発  >  正規表現を使用して文字列内の単語全体を動的に照合するにはどうすればよいですか?

正規表現を使用して文字列内の単語全体を動的に照合するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-20 00:11:02863ブラウズ

How Can I Dynamically Match Whole Words in Strings Using Regular Expressions?

正規表現を使用して文字列内の単語全体を動的に一致させる

文字列内の単語全体を一致させるには、動的正規表現を利用できます。次のシナリオを考えてみましょう:

文内の単語はスペースで区切られていますが、句読点はどちらの側にも現れる場合があります。文字列の途中にある単語を識別するために、次のパターンは単語の部分一致を効果的に防止し、句読点を許可します:

match_middle_words = " [^a-zA-Z\d ]{0,}" + word + "[^a-zA-Z\d ]{0,} "

ただし、このパターンは、先頭または最後の単語が存在しないため、最初または最後の単語と一致しません。末尾のスペース。これに対処するために、追加のパターンを使用できます:

match_starting_word = "^[^a-zA-Z\d]{0,}" + word + "[^a-zA-Z\d ]{0,} "
match_end_word = " [^a-zA-Z\d ]{0,}" + word + "[^a-zA-Z\d]{0,}$"

これらのパターンを組み合わせると、次の文字列が得られます:

match_string = match_middle_words  + "|" + match_starting_word  +"|" + match_end_word 

このアプローチでは、単語が次の場合にのみキャプチャされることが保証されます。単語以外の文字で囲まれています。さらに、文字列の先頭と末尾の単語も処理します。

このプロセスを簡素化するために、b で示される 単語境界 を利用できます。これらの境界は文字列の先頭と末尾で一致するため、最初と最後の単語に別のパターンを使用する必要がなくなります。次のパターンは、単語全体と効率的に一致します:

match_string = r'\b' + word + r'\b'

このパターンは、単語のリストと一致するように簡単に変更できます:

words_list = ['word1', 'word2', 'word3']
match_string = r'\b(?:{})'.format('|'.join(words_list))

単語の境界を利用することで、3 つの単語の境界が不要になります。パターンを分離し、動的正規表現を使用して文字列内の単語全体を照合するプロセスを簡素化します。

以上が正規表現を使用して文字列内の単語全体を動的に照合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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