如果大写字母前后各有一个小写字母,请插入空格

2024-09-19 20:54:01 发布

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

如果aspace包含大写字母(但不是第一个字母),是否有办法插入它

例如,给定“正则表达式”,我想获得“正则表达式”

我尝试了以下正则表达式:

re.sub("[a-z]{1}[A-Z][a-z]{1}", " ","regularExpression") 

不幸的是,这会删除匹配模式:

regula pression

我更喜欢正则表达式的解决方案,但也会感谢任何有效的解决方案。 谢谢


Tags: re字母模式大写字母解决方案办法aspacepression
3条回答
In [1]: s = 'RegularExpression'

In [2]: answer = []

In [3]: breaks = [i for i,char in enumerate(s) if char.isupper()]

In [4]: breaks = breaks[1:]

In [5]: answer.append(s[:breaks[0]])

In [6]: for start,end in zip(breaks, breaks[1:]):
   ...:     answer.append(s[start:end])
   ...:

In [7]: answer.append(s[breaks[-1]:])

In [8]: answer
Out[8]: ['Regular', 'Expression']

In [9]: print(' '.join(answer))
Regular Expression

尝试使用Lookbehind"(?<=[a-z])([A-Z])"

Ex:

import re

s = "RegularExpression"
print(re.sub(r"(?<=[a-z])([A-Z])", r" \1", s))

输出:

Regular Expression

您可以通过以下方式执行此操作:

import re

s = "RegularExpression"
re.sub(r"([A-Z][a-z]+)([A-Z][a-z]+)", r"\1 \2", s)

这意味着“在第一个匹配组和第二个匹配组之间留出一个空格”,其中匹配组是一个大写字母,后跟一个或多个非大写字母

相关问题 更多 >