gpt4 book ai didi

python - 按位置而不是字符拆分字符串

转载 作者:行者123 更新时间:2023-11-28 21:51:46 25 4
gpt4 key购买 nike

我们知道anchorsword boundarieslookaround匹配的是一个位置,而不是匹配一个字符。
是否可以使用正则表达式(特别是在 python 中)通过上述方式之一拆分字符串?

例如考虑以下字符串:

"ThisisAtestForchEck,Match IngwithPosition." 

所以我想要以下结果(以大写字母开头但前面没有空格的子字符串):

['Thisis', 'Atest', 'Forch' ,'Eck,' ,'Match Ingwith' ,'Position.']

如果我拆分分组我得到:

>>> re.split(r'([A-Z])',s)
['', 'T', 'hisis', 'A', 'test', 'F', 'orch', 'E', 'ck,', 'M', 'atchingwith', 'P', 'osition.']

这是环视的结果:

>>> re.split(r'(?<=[A-Z])',s)
['ThisisAtestForchEck,MatchingwithPosition.']
>>> re.split(r'((?<=[A-Z]))',s)
['ThisisAtestForchEck,MatchingwithPosition.']
>>> re.split(r'((?<=[A-Z])?)',s)
['ThisisAtestForchEck,MatchingwithPosition.']

请注意,如果我想拆分以大写字母开头且前面有空格的子字符串,例如:

['Thisis', 'Atest', 'Forch' ,'Eck,' ,'Match ', Ingwith' ,'Position.']

我可以使用re.findall,即:

>>> re.findall(r'([A-Z][^A-Z]*)',s)
['Thisis', 'Atest', 'Forch', 'Eck,', 'Match ', 'Ingwith', 'Position.']

但是第一个例子呢:有没有可能用re.findall来解决呢?

最佳答案

re.findall 的一种方式:

re.findall(r'(?:[A-Z]|^[^A-Z\s])[^A-Z\s]*(?:\s+[A-Z][^A-Z]*)*',s)

当您决定将您的方法从 split 更改为 findall 时,第一项工作包括重新表述您的要求:“我想将字符串拆分为每个大写字母非前面有一个空格"=> "我想找到一个或多个以大写字母开头的空格分隔的子字符串,除了字符串的开头(如果字符串不以大写字母开头)

关于python - 按位置而不是字符拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29496502/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com