regex - 以任意顺序匹配多个组,中间有未知文本

标签 regex regex-lookarounds regex-group

示例:HERE

我有一些文字如下:

M=NS MAX=[5,10,20,20] A=4 MIN=[1,1,1,20] R=1 S=1 T=3 D=2 

M=NS MAX=[5,10,20,20] MIN=[1,1,1,20] R=1 S=1 T=3 A=4 D=2 

M=NS MAX=[5,10,20,20] Z=123 MIN=[1,1,1,20] R=1 S=1 T=3 A=4 D=2 

我有我的正则表达式:

^(?:\w*M=(?P<M>\w+)
|\s+S=(?P<S>[\d,]+)
|\s+C=(?P<C>[\d,]+)
|\s+MAX=\[(?P<MAX>[\d,]+)\]
|\s+MIN=\[(?P<MIN>[\d,]+)\]
|\s+A=(?P<A>\d+)
|\sR=(?P<R>[\d,]+))+.*?$

正则表达式工作得很好,但是,我陷入了这个问题的最后部分。正则表达式适用于我要查找的术语的任何顺序,但一旦中间有附加术语,则不会将其作为一个组进行检查(例如 Z=123 第 3 行),然后它就中断了。有什么办法可以解决这个问题吗?

最佳答案

您可以添加通用替代,例如

|\s+\w+=\S+.

它匹配空格,后跟多个(一个或多个)单词字符 ([a-zA-Z0-9]),然后是等号,最后是多个非空格字符。

See your modified example here .

关于regex - 以任意顺序匹配多个组,中间有未知文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47176037/

相关文章:

regex - Linux SED RegEx 替换,但保留通配符

regex - Perl 正则表达式的优先级规则是什么?

java - 在 Java 中提取文本而无需条件前瞻

java - 如何选择包含前一个单词的单词?

javascript - 如何过滤保留原始组结果的先前正则表达式组的结果

regex - 如何使用可选组作为以下首选 java 语法使用 Regex 解析文本

R 合并数据帧,允许不精确的 ID 匹配(例如,附加字符 1234 匹配 ab1234)

YouTube URL 的正则表达式

java - 使用正则表达式在java中拆分字符串

Java 正则表达式 : Negative lookahead