搜索具有部分和完整单词的正则表达式单词边界


$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(?:internalWtransport|accountmanag|accountWmanag)w*~i'

查看正则表达式演示

  • b - 词界
  • (?:internalWtransport|accountmanag|accountWmanag) - 匹配三种备选方案之一的非捕获交替组:
    • internalWtransport - internal,一个非单词字符,transport
    • | - 或
    • accountmanag - accountmanag
    • | - 或
    • accountWmanag - account,一个非单词字符,manag
  • w* - 0+ 单词字符。

请参阅 PHP 演示:

$str = 'Company Name Internal Transport Worldwide  
Account Manager New Business';
$re = "/b(?:internalWtransport|accountmanag|accountWmanag)w*/i";  
if (preg_match_all($re, $str, $matches)) {
    print_r($matches[0]);
}

输出:

Array
(
    [0] => Internal Transport
    [1] => Account Manager
)

最新更新