Regex要大写拆分,但如果前面有空格,则不拆分?

2024-06-17 11:05:45 发布

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

在Python中有什么方法可以做到以下几点?我有一个类似"Trip HopDowntempoSynth-pop"的字符串,我可以在大写字符上拆分,但是我想要的是在大写字符上拆分,除非前面有空格。在

我尝试将!添加到:

print (re.findall(r'[A-Z](?:A-Z*(?![a-z])|[a-z]*)',line))

我把加法放在哪里没有区别。在


Tags: 方法字符串reline字符pop空格print
3条回答

这不是一个正则表达式,但它很容易满足您的问题。在

s = "Trip HopDowntempoSynth-pop"

arr = []
word = s[0]
for i in range(1, len(s)):
    if s[i].isupper():
        if s[i - 1] == " ":
            word += s[i]
        else:
            arr.append(word)
            word = s[i]
    else:
        word += s[i]
arr.append(word)

print(arr)

它打印出一个如下所示的数组:

[“Trip Hop”、“downttempo”、“Synth pop”]

你的意思是这样吗?在

re.split('\s+(?=[A-Z])', "Trip HopDowntempoSynth-pop")
# ['Trip', 'HopDowntempoSynth-pop']

或者相反:

^{pr2}$

可能是迂回,但通过迭代的组合实现了我想您想要的关于芬德尔使用re.sub公司若要将匹配项替换为占位符字符,然后拆分该占位符。。。在

import re
s = "Trip HopDowntempoSynth-pop"

pattern = re.compile("[a-z][A-Z]")

matches = re.findall(pattern, s)

for match in matches:
    match_replacer = match[0] + '|' + match[1]
    s = s.replace(match, match_replacer)


s.split('|')

它给出了输出

^{pr2}$

相关问题 更多 >