首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用regex (或其他什么?)缩略首字母/缩写。

用regex (或其他什么?)缩略首字母/缩写。
EN

Stack Overflow用户
提问于 2013-05-16 15:56:19
回答 1查看 417关注 0票数 1

我正在实现一个模糊查找工具,我认为我可以通过将不同的首字母折叠成一个标记来提高结果。“ABC仓库”只是两个令牌:"ABC“和”仓库“。

换句话说,它需要删除所有连续的孤立字母数字对之间的空格(或句点)。所以这些会凝结..。

  • A B C仓库
  • A.B.C.仓库

但这些不会..。

  • AB C仓库
  • BC仓库

我的第一个预感是使用regex替换,这自然意味着我现在有两个问题而不是一个问题。这大概是我试过的,但不起作用。这是to代码,调用的函数只是.NET的Regex方法的包装器。

它将"A - B“浓缩成"AB",从而取消"C”被浓缩成对"AB“的资格,从而产生”AB C仓库“。(至少我认为这就是正在发生的事情;我不是正则表达式内部的专家。)

代码语言:javascript
复制
master.dbo.RegexReplace(
    'A B C Warehouse',
    '(?<c1>(^|[^a-z0-9])[a-z0-9])[ \.](?<c2>[a-z0-9]([^a-z0-9]|$))',
    '${c1}${c2}',
    0 /*Case-sensitivity flag*/
)

我甚至应该用正则表达式来做这种事情,还是只编写一个对输入字符串进行有状态扫描并清除它的例程就更有意义了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-16 16:16:13

尝试以下替换:

代码语言:javascript
复制
find: (?<=\b[A-Z])[ .](?=[A-Z]\b)
replacement is an empty string.

解释:

模式搜索空格或点前面有一个字母,后面跟着一个字母。这就是为什么它使用一个查找后面的(?<=...)和一个向前看的(?=...)来测试圆点或空格周围是否存在单个字母。这里使用单词边界\b来确保字母,无论是前后字母,都是单独的。由于观星不吃字符,空格或点只匹配(并替换)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16592193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档