Regex查找并删除ABC或A.B.C缩写

2024-06-08 16:45:08 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的数据中,有很多垃圾,比如IIT-JEEAIPMTC.B.S.E.。因此,我使用(?<!\w)([A-Za-z])\.使用正则表达式来删除这些。它正在删除C.B.S.E.但是它也在删除x.y,这是有用等式的一部分

因此,基本上我想删除长度超过2的缩写,以便保留小写x.y,但删除大写X.Y.Z.。此外,我还想删除任何大写且长度较长的单词>=3.例如abc被保留,但IIT被删除

如何修改现有的正则表达式,或者如何创建一个新的正则表达式来完成这些任务


Tags: 数据gt单词垃圾abc小写iit大写
2条回答

So Basically I want to remove Abbreviations of length more than 2 so that lower case x.y is preserved but Upper Case X.Y.Z. is removed. Also I want to remove any words which are Upper Case and are of length>=3. Such as abc is preserved but IIT is removed.

您可以尝试以下正则表达式:

\b(?:[A-Z]{3,}\b|(?:[A-Za-z]\.){2,})\s*

RegEx Demo

正则表达式详细信息:

  • \b:单词边界
  • (?::启动一个非捕获组
    • [A-Z]{3,}\b:匹配3个以上大写字母的单词
    • |:或
    • (?:[A-Za-z]\.){2,}:匹配字母缩写,后跟最小长度为2的点
  • ):非捕获组
  • \s*:匹配0个或多个空格

你可以用

(?<!\S)(?:(?:[A-Za-z]\.){3,}|[A-Z]{3,})(?!\S)

解释

  • (?<!\S)左边的空白边界
  • (?:非捕获组
    • (?:[A-Za-z]\.){3,}重复3次或更多次A-Za-z,后跟一个点
    • |
    • [A-Z]{3,}匹配3个大写字符
  • )关闭非捕获组
  • (?!\S)右边的空白边界

Regex demo

相关问题 更多 >