按空格数拆分字符串

2024-09-26 18:21:24 发布

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

我有一个字符串,看起来像以下三个示例之一:

1: Name             = astring               Some comments
2: Typ              = one two thee             Must be "sand", "mud" or "bedload"
3: RDW    = 0.02      [ - ] Some comment about RDW

我首先拆分变量名,然后如下所示:

re.findall(r'\s*([a-zA-z0-9_]+)\s*=\s*(.*)', line)

然后,我想将字符串的右侧部分拆分为包含值的部分和包含注释的部分(如果有的话)。我想通过查看空格的数量来实现这一点。如果它超过了4,那么我假设评论开始了

你知道怎么做吗?你知道吗

我现在有

re.findall(r'(?:(\S+)\s{0,3})+', dataString)

但是,如果我使用字符串来测试它:

'aa    aa23r234rf2134213^$&$%&            bb'

然后它还选择“bb”


Tags: 字符串namere示例someonecommentsbb
1条回答
网友
1楼 · 发布于 2024-09-26 18:21:24

可以将单个正则表达式与re.findall一起使用:

^\s*(\w+)\s*=\s*(.*?)(?:(?:\s{4,}|\[)(.*))?$

参见regex demo。你知道吗

详细信息:

  • ^-字符串开头
  • \s*-0+空格
  • (\w+)-捕获组#1匹配1个或多个字母/数字/下划线
  • \s*=\s*-=用0+空格括起来
  • (.*?)-捕获组#2匹配任何0+个字符,尽可能少,直到第一个。。。你知道吗
  • (?:(?:\s{4,}|\[)(.*))?-可选的组匹配
    • (?:\s{4,}|\[)-4个或更多的空格或[
    • (.*)-捕获组#3匹配0+个字符,最多
  • $-字符串的结尾。你知道吗

相关问题 更多 >

    热门问题