1

私はこの弦を持っています。

$string = 'product_posting_list_name_1';

これを使用して一致を見つけていますが、一致が見つかりません。誰かが私に理由を説明できますか? 最後のアンダースコアと数字まで一致させたいです。

preg_match('/\bproduct_posting_list_name\b/', $string)
4

2 に答える 2

4

_アンダースコアは、境界自体ではなく、経由で配置した境界の内側にある単語文字と見なされます。正規表現は境界間の完全な単語を探していますが、境界は . の後に発生します。\b_1

それを一致させるために、右側の境界を使用することはできません。

$string = "product_posting_list_name_1";
// Replace the right-side \b with a [\d]+ to indicate 1 or more digits, followed by the \b boundary.
preg_match('/\bproduct_posting_list_name_[\d]+\b/', $string);
于 2012-05-22T21:53:35.393 に答える
0

正規表現ではありませんが、機能します:

$string = 'product_posting_list_name_1';
if (strpos($string, 'product_posting_list_name') === 0) { echo 'found'; }
于 2012-05-22T21:59:59.807 に答える