我的目标是在各种缩写字母之间添加空格。
缩略语有三个条件:
包含至少两个或两个以上letters.
想想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.
发布于 2021-12-04 05:30:10
正则表达式
/([A-Z])([A-Z])/将匹配相邻两个大写字母的实例。然后,您将希望在替换中使用捕获组来获得在它们之间有一个空格的相同字母。
/\1 \2/这只会连续捕获前两个大写字母,因此第一次迭代后的输出如下所示:
Think of D NS, I P, T CP/I P, etc.因此,您需要重复替换,直到正则表达式不匹配为止。在Python中,这将是:
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现在以以下形式结束:
Think of D NS, I P, T CP/I P, etc.https://stackoverflow.com/questions/70222879
复制相似问题