Php 使用部分词和完整词搜索正则表达式词边界

Php 使用部分词和完整词搜索正则表达式词边界,php,regex,preg-match,Php,Regex,Preg Match,我正在寻找这个结果: -内部传输 -客户经理 这样做的正确方法是什么?您可以使用 $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(inte

我正在寻找这个结果:
-内部传输
-客户经理

这样做的正确方法是什么?

您可以使用

$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
    -单词边界
  • (?:内部\Wtransport | accountmanag | account\Wmanag)
    -与三个备选方案中的任何一个匹配的非捕获备选方案组:
    • internal\Wtransport
      -
      internal
      ,一种非单词字符,
      transport
    • |
      -或
    • accountmanag
      -
      accountmanag
    • |
      -或
    • account\Wmanag
      -
      account
      ,一种非单词字符,
      manag
  • \w*
    -0+字字符
见:

输出:

$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]);
}

找到了一些东西,这似乎有效:“/\b(internal.transport | accountmanag | account.manag)\w*/mi”
$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
)