首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在直接相邻的大写字母之间插入空格

在直接相邻的大写字母之间插入空格
EN

Stack Overflow用户
提问于 2021-12-04 03:43:54
回答 1查看 69关注 0票数 1

我的目标是在各种缩写字母之间添加空格。

缩略语有三个条件:

包含至少两个或两个以上letters.

  • abbreviations‘s capitalized.

  • special字符"/“的
  1. 缩写被认为是大写字母

想想DNS,IP,TCP/IP等等。

我想对它们进行文本处理,使其转化为:

D N S

I P

T C P / I P

让我说我有这句话

因为IP提供了这个基本的路由功能,所以经常使用“IP路由器”这个术语。其他较老的路由器术语有(IP网关)、Internet网关和网关。TCP/IP 12345。

运行这个命令一定程度上解决了我的问题:sed -e "s/[a-z \, \. \' \“ \” \( \) 0-9]*/& /g" -e "s/ */ /g" test.txt --它没有很好地得到它。

我明白了:

因为is提供了这个基本的路由功能,所以经常使用术语“is路由器”。其他较旧的路由器术语有(I网关)、Internet网关和网关。T C P/I P 12345。

在“和我的P”之间还有一个空白。

在(和我之间)之间有一个空格。

在[和因特网]之间也有一个空间。

转义和使用$ sed -e "s/[a-z \, \. \' \“ \” \( \) \[ \] 0-9]*/& /g" -e "s/ */ /g" test.txt不起作用,如下所示。

因为IP提供了这个基本的路由功能,所以经常使用“IP路由器”这个术语。其他较老的路由器术语有(IP网关)、Internet网关和网关。TCP/IP 12345.

EN

回答 1

Stack Overflow用户

发布于 2021-12-04 05:30:10

正则表达式

代码语言:javascript
复制
/([A-Z])([A-Z])/

将匹配相邻两个大写字母的实例。然后,您将希望在替换中使用捕获组来获得在它们之间有一个空格的相同字母。

代码语言:javascript
复制
/\1 \2/

这只会连续捕获前两个大写字母,因此第一次迭代后的输出如下所示:

代码语言:javascript
复制
Think of D NS, I P, T CP/I P, etc.

因此,您需要重复替换,直到正则表达式不匹配为止。在Python中,这将是:

代码语言:javascript
复制
the_string = 'Think of DNS, IP, TCP/IP, etc.'

while re.search(r'([A-Z])([A-Z])', the_string):
    the_string = re.sub(r'([A-Z])([A-Z])', r'\1 \2', the_string)

the_string现在以以下形式结束:

代码语言:javascript
复制
Think of D NS, I P, T CP/I P, etc.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70222879

复制
相关文章

相似问题

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