使用regexp在MATLAB中查找重复发生的模式

时间:2018-09-19 09:55:06

标签: regex matlab strsplit

 input = ' 12Z taj 20501 jfdjda OCNL jtjajd ptpa 23Z jfdakdkf tjajdfk OCNL fdkadja 02Z fdjafsdk fkdsafk OCNL fdkafk dksakj = '

使用正则表达式

regexp(input,'\s\d{2,4}Z\s.*(OCNL)','match')

我正在尝试获取输出

[1,1] = 12Z taj 20501 jfdjda OCNL jtjajd ptpa

[1,2] = 23Z jfdakdkf tjajdfk OCNL fdkadja

[1,3] = 02Z fdjafsdk fkdsafk OCNL fdkafk dksakj

1 个答案:

答案 0 :(得分:1)

您可以使用

(?<!\S)\d{2,4}Z\s+.*?\S(?=\s\d{2,4}Z\s|\s*=\s*$)

请参见regex demo

详细信息

  • (?<!\S)-当前位置的左侧必须紧跟空格或字符串开头
  • \d{2,4}-2、3或4位数字
  • Z-一封Z字母
  • \s+-超过1个空格
  • .*?\S-尽可能少的零个或多个字符,然后为非空白
  • (?=\s\d{2,4}Z\s|\s*=\s*$)-当前位置的右边必须有两种模式之一:
    • \s\d{2,4}Z\s-2位,3位或4位空格,Z和1位空格
    • |-或
    • \s*=\s*$-一个=,在字符串末尾用0+空格字符括起来。