使用部分和完整单词搜索正则表达式单词边界
searching for regex word boundery with partial and complete words
$str = 'Company Name Internal Transport Worldwide
Account Manager New Business';
I tried:
$re = "/\b(internal.transport|accountmanag|account.manag).*\W/mi";
// result: Internal Transport
$re = "/\b(internal.transport|accountmanag|account.manag)\w+/mi";
// result: Account Manager
$re = "/\b(internal.transport|accountmanag.`*|account.manag.`*)\W/mi";
// result: Internal Transport, Account Manager New
preg_match($re, $str, $matches);
我正在寻找这个结果:
- 内部运输
- 客户经理
执行此操作的正确方法是什么?
您可以使用
'~\b(?:internal\Wtransport|accountmanag|account\Wmanag)\w*~i'
详情
\b
- 单词边界
(?:internal\Wtransport|accountmanag|account\Wmanag)
- 匹配以下三个备选方案中的任何一个的非捕获备选组:
internal\Wtransport
- internal
,非单词字符,transport
|
- 或
accountmanag
- accountmanag
|
- 或
account\Wmanag
- account
,非单词字符,manag
\w*
- 0+ 个单词字符。
参见 PHP demo:
$str = 'Company Name Internal Transport Worldwide
Account Manager New Business';
$re = "/\b(?:internal\Wtransport|accountmanag|account\Wmanag)\w*/i";
if (preg_match_all($re, $str, $matches)) {
print_r($matches[0]);
}
输出:
Array
(
[0] => Internal Transport
[1] => Account Manager
)
$str = 'Company Name Internal Transport Worldwide
Account Manager New Business';
I tried:
$re = "/\b(internal.transport|accountmanag|account.manag).*\W/mi";
// result: Internal Transport
$re = "/\b(internal.transport|accountmanag|account.manag)\w+/mi";
// result: Account Manager
$re = "/\b(internal.transport|accountmanag.`*|account.manag.`*)\W/mi";
// result: Internal Transport, Account Manager New
preg_match($re, $str, $matches);
我正在寻找这个结果:
- 内部运输
- 客户经理
执行此操作的正确方法是什么?
您可以使用
'~\b(?:internal\Wtransport|accountmanag|account\Wmanag)\w*~i'
详情
\b
- 单词边界(?:internal\Wtransport|accountmanag|account\Wmanag)
- 匹配以下三个备选方案中的任何一个的非捕获备选组:internal\Wtransport
-internal
,非单词字符,transport
|
- 或accountmanag
-accountmanag
|
- 或account\Wmanag
-account
,非单词字符,manag
\w*
- 0+ 个单词字符。
参见 PHP demo:
$str = 'Company Name Internal Transport Worldwide
Account Manager New Business';
$re = "/\b(?:internal\Wtransport|accountmanag|account\Wmanag)\w*/i";
if (preg_match_all($re, $str, $matches)) {
print_r($matches[0]);
}
输出:
Array
(
[0] => Internal Transport
[1] => Account Manager
)