使用正则表达式在 MATLAB 中查找重复出现的模式
Using regexp to find a reoccurring pattern in MATLAB
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
您可以使用
(?<!\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
和一个空格
|
- 或
\s*=\s*$
- =
在字符串末尾包含 0+ 个空白字符。
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
您可以使用
(?<!\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
和一个空格|
- 或\s*=\s*$
-=
在字符串末尾包含 0+ 个空白字符。