Matlab正则表达式与令牌的行为不一致

用户名

我有一组字符串(总共几千个)需要解析,如下所示:

'22-213-1-0,0'
'4-23-1-1,0'
'85-572A-1-1,0'
'3-13-1-1,0'
'6-58A-1-1,0'

我想要第一个数字(不是数字!),第二个数字和字母(如果存在)分别返回:

'22' '213' ''
'4'  '23'  ''
'85' '572' 'A'
'3'  '13'  ''
'6'  '58'  'A' 

我用一个正则表达式来做到这一点:

input = {'22-213-1-0,0' '4-23-1-1,0' '85-572A-1-1,0' '3-13-1-1,0' '6-58A-1-1,0'}'

test='(\d*)+[-]+(\d*)+(\w)+[-]\w*';

for i=1:length(input)

    parsedstring=regexp(input(i),test,'tokens');
    output(i,1)=cellfun(@str2num,parsedstring{1}{1}(1));
    output(i,2)=cellfun(@str2num,parsedstring{1}{1}(2));
    letter(i)=parsedstring{1}{1}(3);
end

但是结果似乎不一致:output =

22    21
 4     2
85   572
 3     1
 6    58

字母=

'3'    '3'    'A'    '3'    'A'

为什么正则表达式有时只返回第二个数字的第一个数字?我以为第一个数字只有1个数字长,但是最后一个字符串证明有时它可以正确解析一个数字,这可能会发生。我想念什么?

查普

这里的关键是而不是来指定或一个单词字符正如我在评论中所说,这意味着您可以更新为,\w?\wtest

test='(\d*)-(\d*)(\w?)-.*';

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

Raku正则表达式:最长的令牌匹配不一致

来自分类Dev

正则表达式捕获的组与正则表达式的成功不一致

来自分类Dev

正则表达式匹配中的不一致

来自分类Dev

客观C正则表达式不一致

来自分类Dev

红宝石正则表达式不一致

来自分类Dev

group()和group()之间的Python正则表达式输出不一致

来自分类Dev

Java中不一致的正则表达式字符类

来自分类Dev

Javascript-正则表达式不一致

来自分类Dev

正则表达式验证不一致

来自分类Dev

C++ Visual Studio 2015 正则表达式不一致

来自分类Dev

Scala正则表达式:findAll和match之间的不一致...大小写

来自分类Dev

通过全局变量搜索时,perl正则表达式不一致

来自分类Dev

Perl-正则表达式,有条件的,并针对不一致的字符串匹配多个对象

来自分类Dev

Perl-正则表达式,有条件的,并针对不一致的字符串匹配多个对象

来自分类Dev

正则表达式捕获在所有事件上不一致的 IP 地址和用户名

来自分类Dev

令牌化中的奇怪正则表达式行为

来自分类Dev

不一致的快速行为

来自分类Dev

行为不一致

来自分类Dev

.click()的行为不一致?

来自分类Dev

BufferedImage行为不一致

来自分类Dev

CDate()的行为不一致

来自分类Dev

行为不一致

来自分类Dev

beautifulsoup行为不一致

来自分类Dev

ActionLink的行为不一致

来自分类Dev

DateTime行为不一致

来自分类Dev

正则表达式以一致的顺序提取字符串的不同部分

来自分类Dev

您可以一致地进行正则表达式吗?

来自分类Dev

正则表达式用于一致的人名

来自分类Dev

正则表达式没有返回一致的结果