首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于带有重复标记的字符串的RegExp

用于带有重复标记的字符串的RegExp
EN

Stack Overflow用户
提问于 2019-11-08 08:30:34
回答 3查看 60关注 0票数 0

有一天,我将掌握Regexp,但我再次发现自己陷入了Python模块。当我使用;作为regexp构造时,它只返回;字符,老实说,这有点令人尴尬。

我希望拆分这个数据字符串:

$POSL;VEL;GPS;040.0;0.1;;;*32

;是分隔符,但是获得元素6和7的空匹配(空字符串)是很重要的。

所以,我需要的输出是:

  • "$POSL"
  • "VEL"
  • "GPS"
  • "040.0"
  • "0.1"
  • ""
  • ""
  • "*32"

注意:,我知道打电话给split()会更容易。但是,我需要知道标记的字符索引-例如,我知道VEL占用字符6-8。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-11-08 09:17:33

Regex:

([^;]+|(?<=;)(?=;)|^(?=;)|(?<=;)$)

关于投入:

;$POSL;VEL;GPS;040.0;0.1;;;*32;;

给予:

代码语言:javascript
复制
Match 1
1.  Empty
Match 2
1.  $POSL
Match 3
1.  VEL
Match 4
1.  GPS
Match 5
1.  040.0
Match 6
1.  0.1
Match 7
1.  Empty
Match 8
1.  Empty
Match 9
1.  *32
Match 10
1.  Empty
Match 11
1.  Empty

https://regex101.com/r/HVrN1M/1

但我认为打电话给split要容易得多。

票数 1
EN

Stack Overflow用户

发布于 2019-11-08 08:36:53

这对我有用。不需要审判。

代码语言:javascript
复制
inp = '$POSL;VEL;GPS;040.0;0.1;;;*32'
print(inp.split(';'))
票数 2
EN

Stack Overflow用户

发布于 2019-11-08 08:42:41

Re.split(‘定界符’,字符串) ->第一个参数是要拆分字符串的分隔符,第二个参数是要对其进行此操作的字符串。

它返回字符串列表,因此您可以根据自己的愿望使用。

代码语言:javascript
复制
import re

#String s
s="$POSL;VEL;GPS;040.0;0.1;;;*32"

l=re.split(';',s)
print(l)

#['$POSL', 'VEL', 'GPS', '040.0', '0.1', '', '', '*32']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58762967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档