0

"DOM" * ".Net" * や"C++"などの文字列を含む単語の配列があります。単語境界ワイルドカードを使用して、テキスト内のこれらの各文字列に対して単語全体の一致を実行しようとしています。単語が変数に読み込まれると、次のようになります。

preg_match("/\b".preg_quote($word)."\b/",...)

これは、"DOM" のような例では問題なく機能しますが、".Net" や "C++" では機能しません.Net の場合は、C++ の場合は+で既に表示されています。PHP の正規表現で.NetまたはC++を単語境界の「単語」として扱う別の方法はありますか?

4

2 に答える 2

2

\b単語以外の文字 ( ) に一致するため、これは実行できません\W

代わりにできることは、以下に示すように、単語として定義した文字セットに一致しない文字を検索することです。

preg_match("/([^a-zA-Z_.+])".preg_quote($word)."\1/",...);

編集: backrefrence を追加したので、そのシーケンスを一度だけ入力する必要があります。

于 2013-05-13T06:25:26.033 に答える
0

文字クラス...スペースとコンマのみを実行したい場合は、これを実行します

preg_match("/[, ]".preg_quote($word)."[, ]/",...)
于 2013-05-13T06:24:42.813 に答える