正则表达式替换以获得合法名称

问题描述 投票:1回答:1

我有他们的教育资格名单,我需要清理和删除他们的教育资格。下面是一些列举的例子。

  1. 伯曼,PMP,CSM
  2. Adesanya,MBA
  3. 无国界医生Blagrove-Mandley
  4. Baldwin,M.A。| MBA
  5. Akwaboah-CEH,CASP,CAP,CCSK,SCM,VmWare。
  6. Arif(CCIE SP)
  7. A.盾牌,BB,PMP
  8. 年轻的楚,CFA

我需要输出像

  • 伯曼
  • Adesanya
  • Blagrove-Mandley
  • 鲍德温
  • Akwaboah
  • 阿里夫
  • A.盾牌
  • young出

我需要一个没有资格的有效法律名称。我试着用preg_replace。下面是我的代码

preg_replace('/[^A-Za-z\. -]/i',' ',$result->last_name);
php preg-replace
1个回答
1
投票

你可以用

'~(?:-\p{Lu}+\b|\s*\([^()]*\)|[,|][^,|]+)+$~'

regex demo。您可以在最后一个u分隔符后添加~修饰符以支持Unicode字符串。

细节

  • (?:-\p{Lu}+\b|\s*\([^()]*\)|[,|][^,|]+)+ - 连续一次或多次重复: -\p{Lu}+\b| - 1个大写字母作为整个单词,或 \s*\([^()]*\)| - 0+空格跟随(,除了()之外的任何0+字符,然后是),或者 [,|][^,|]+ - 一个,|跟着除了,|以外的1+个字符
  • $ - 字符串锚的结尾。
© www.soinside.com 2019 - 2024. All rights reserved.