Python中的正则表达式,用于根据以@开头、以:?结尾的字符拆分字符串



我有这样的字符串:

sentences = "@en:The dog went for a walk@es:El perro fue de paseo" 

期望输出:

splitted = ['The dog went for a walk', 'El perro fue de paseo']

当前代码:

splitted = re.split("^@:$", sentences)  

因此,我喜欢根据以加号@开头、以冒号:结尾的字符来拆分句子,因为这是所有语言的编码方式,例如(@en:、@es:、@fr:、@nl:等(

您可以使用否定字符类从@拆分为:而不必在两者之间匹配任何字符。

结果中可能有空条目,您可以过滤掉这些条目。

@[^@:]*:

Regex演示

import re
sentences = "@en:The dog went for a walk@es:El perro fue de paseo"
splitted = [s for s in re.split("@[^@:]*:", sentences) if s]
print(splitted)

输出

['The dog went for a walk', 'El perro fue de paseo']

你好,试试这个代码,它会帮助你

import re
sentences = "@en:The dog went for a walk@es:El perro fue de paseo" 
splitted = re.split(r"@[a-zA-z]+:",sentences)  
print(splitted)

您需要这个正则表达式:@[^@:]+:

首先,@@匹配

接下来,[^@:]+匹配不是@:的任意数量的字符(最小一个(

最后,::匹配

import re
sentences = "@en:The dog went for a walk@es:El perro fue de paseo"
splitted = re.split("@[^@:]+:", sentences)
print(splitted[1:])

输出:

['The dog went for a walk', 'El perro fue de paseo']

最新更新