Regex模式将不同的变量分组
我一直很难为字符串找到合适的正则表达式模式 字符串如下所示:Regex模式将不同的变量分组,regex,regex-group,Regex,Regex Group,我一直很难为字符串找到合适的正则表达式模式 字符串如下所示: 0| DIMM: Hynix | Not installed | DIMM: Micron | DIMM: Hynix | 它也可以变成这样 1| Not installed | DIMM: Samsung | DIMM: Hynix | DIMM: Hynix | 而Dimm:variable可以更改为三星、海力士、美光,甚至可以不
0| DIMM: Hynix | Not installed | DIMM: Micron | DIMM: Hynix |
它也可以变成这样
1| Not installed | DIMM: Samsung | DIMM: Hynix | DIMM: Hynix |
而Dimm:variable可以更改为三星、海力士、美光,甚至可以不安装。我想将每一个单独分组,如“Hynix”、“Micron”、“Samsung”和“Not installed”。我不想将DIMM:包含在其中
我已经尝试过了,但只获取了第一个变量
(Not installed|(?<=DIMM:)\s[a-zA-Z]+)
(未安装|)(?使用带后视的1个模式正则表达式
从正则表达式开始,利用注释,您还可以使用:
((?<=DIMM: )\w+|Not installed)
使用4个模式regex
我知道这不是一个很好的正则表达式,但可能会帮助您做到这一点:
\|\s*(?:DIMM: )?(.*?)\s*\|\s*(?:DIMM: )?(.*?)\s*\|\s*(?:DIMM: )?(.*?)\s*\|\s*(?:DIMM: )?(.*?)\s*\|
使用此正则表达式将为您提供4组完整的捕获内容行匹配。缺点是正则表达式非常难看。结果如下:
匹配信息
MATCH 1
1. [11-16] `Hynix`
MATCH 2
1. [26-39] `Not installed`
MATCH 3
1. [53-59] `Micron`
MATCH 4
1. [74-79] `Hynix`
MATCH 5
1. [92-105] `Not installed`
MATCH 6
1. [119-126] `Samsung`
MATCH 7
1. [140-145] `Hynix`
MATCH 8
1. [161-166] `Hynix`
MATCH 1
1. [11-16] `Hynix`
2. [26-39] `Not installed`
3. [53-59] `Micron`
4. [74-79] `Hynix`
MATCH 2
1. [92-105] `Not installed`
2. [119-126] `Samsung`
3. [140-145] `Hynix`
4. [161-166] `Hynix`
MATCH 1
1. [11-16] `Hynix`
MATCH 2
1. [26-39] `Not installed`
MATCH 3
1. [53-59] `Micron`
MATCH 4
1. [74-79] `Hynix`
MATCH 5
1. [92-105] `Not installed`
MATCH 6
1. [119-126] `Samsung`
MATCH 7
1. [140-145] `Hynix`
MATCH 8
1. [161-166] `Hynix`
使用1模式正则表达式
刚刚找到另一个正则表达式,您可以使用:
\|\s*(?:DIMM:)?\s?(\w+\s?\w+)
此正则表达式仅使用1个捕获组,它比第一个捕获组短,但它被多次用于匹配您想要的内容。因此,您必须添加更多逻辑来迭代前4个匹配,您知道它属于完整的行。结果如下:
匹配信息
MATCH 1
1. [11-16] `Hynix`
MATCH 2
1. [26-39] `Not installed`
MATCH 3
1. [53-59] `Micron`
MATCH 4
1. [74-79] `Hynix`
MATCH 5
1. [92-105] `Not installed`
MATCH 6
1. [119-126] `Samsung`
MATCH 7
1. [140-145] `Hynix`
MATCH 8
1. [161-166] `Hynix`
MATCH 1
1. [11-16] `Hynix`
2. [26-39] `Not installed`
3. [53-59] `Micron`
4. [74-79] `Hynix`
MATCH 2
1. [92-105] `Not installed`
2. [119-126] `Samsung`
3. [140-145] `Hynix`
4. [161-166] `Hynix`
MATCH 1
1. [11-16] `Hynix`
MATCH 2
1. [26-39] `Not installed`
MATCH 3
1. [53-59] `Micron`
MATCH 4
1. [74-79] `Hynix`
MATCH 5
1. [92-105] `Not installed`
MATCH 6
1. [119-126] `Samsung`
MATCH 7
1. [140-145] `Hynix`
MATCH 8
1. [161-166] `Hynix`
您的正则表达式已经很好了,我建议类似代码>((我将在C++中使用它),但现在我正在使用一个在线正则表达式测试仪实时测试它。