Python使用正则表达式分隔字符串

Python使用正则表达式分隔字符串,python,regex,Python,Regex,这是我的字符串: st = "$10,8001st$6,480,2nd$2,160,3rd$1,188,4th$648,5th$324" 我的预期产出是: $10,800 1st $6,480, 2nd $2,160, 3rd $1,188, 4th $648, 5th $324 我写这段代码: result = " ".join(re.split("([\$\d\,]+)\d[a-zA-z]{2}", st)) 但输出不满足我,因为它删除了一些部分 有人能帮我吗?你可以用 text =

这是我的字符串:

st = "$10,8001st$6,480,2nd$2,160,3rd$1,188,4th$648,5th$324"
我的预期产出是:

$10,800 1st $6,480, 2nd $2,160, 3rd $1,188, 4th $648, 5th $324
我写这段代码:

result = " ".join(re.split("([\$\d\,]+)\d[a-zA-z]{2}", st))
但输出不满足我,因为它删除了一些部分

有人能帮我吗?

你可以用

text = "$10,8001st$6,480,2nd$2,160,3rd$1,188,4th$648,5th$324"
print(" ".join(re.split(r'(\$\d{1,3}(?:,\d{3})*,?)', text)).strip())
# => $10,800 1st $6,480, 2nd $2,160, 3rd $1,188, 4th $648, 5th $324
请参阅和。模式是一个匹配的单个捕获组(因此,
re.split
也可以输出捕获的字符串)

  • \$
    -a
    $
    字符
  • \d{1,3}
    -一位、两位或三位数字
  • (?:,\d{3})*
    -0或更多次出现的
    ,后跟三位数字
  • ,?
    -可选的

$444th
应该给出
$444th
$44th
?您好,欢迎来到stack overflow,问题不在于python,而在于您的regexp表达式,我建议您使用像regex101这样的站点来测试此类情况。请看一看,因为您看到最后一个部分没有作为一个部分进行解析。