Php 用于检测单词缩写的正则表达式
我目前正在开发一个CSV,其中包含葡萄牙行政区域和邮政编码的信息,但该文件没有遵循任何严格的格式,这意味着有时整个字符串都是大写的,还有其他问题 我想解决的问题如下:一些地区的名称末尾有一个缩写,与它的家长的管理级别有关,我想删除它。据我所知,这是规则:Php 用于检测单词缩写的正则表达式,php,regex,Php,Regex,我目前正在开发一个CSV,其中包含葡萄牙行政区域和邮政编码的信息,但该文件没有遵循任何严格的格式,这意味着有时整个字符串都是大写的,还有其他问题 我想解决的问题如下:一些地区的名称末尾有一个缩写,与它的家长的管理级别有关,我想删除它。据我所知,这是规则: 缩略语长度不超过3个字符(到目前为止始终为3个字符) 第一个字符可以是任何字母,不区分大小写 最后两个字符总是辅音(例如Z、B、M、P、…) (编辑)缩写词总是作为字符串中的最后一个单词出现 (编辑2)-字符串总是UTF-8 目的是从区域名称中
UTF-8
目的是从区域名称中删除这些缩写。听起来很简单
/\b[a-z][ZBMP]{2}\b/i
如果要匹配任何这样描述的缩写,请在第二个字符类([ZBMP]
)中添加字母以完成匹配
只有当它不是另一个单词的一部分时,它才会匹配(这是
\b
的工作)。关于“太多TLA”的问题呢?foo
是一个有效的词还是一个首字母缩略词?哪个首字母缩略词?如果名称末尾出现3个字符,且符合上述规则,则为缩写。我已经用“手”检查过了。@yoda,它总是一行中的最后一个字母?@MarcBtla
和foo
在最后两个字符点都有元音,所以不会受到影响。我只是想说清楚,FTR;)我们可以在以后进一步讨论这个问题;IRC FTW@yoda您应该更新您的问题以包含该信息,因为“始终是行中的最后一件事”可以大大提高准确性。它匹配的单词超过3个字符。如果我把最后一个词拆分出来,应用这个表达,它会起作用,但它不能单独起作用。@yoda:它对我起作用。您测试它的对象是什么字符串?它与以下字符串断开:UrrôArc
。这可能与特殊角色有关。顺便说一下,字符串是用UTF-8
编码的。显然ô
被认为是单词边界:P等等