Regex-多个匹配项、冒号和空格
我试图让一些正则表达式工作,但在我的特定用例中有点失败 例如,给定以下字符串Regex-多个匹配项、冒号和空格,regex,excel,vba,Regex,Excel,Vba,我试图让一些正则表达式工作,但在我的特定用例中有点失败 例如,给定以下字符串 Device-1: P0_Node0_Channel0_Dimm0 size: 32 GB speed: 2133 MHz type: DDR4 我想从这个字符串中提取信息,最好是这样: Device-1: P0_Node0_Channel0_Dimm0 size: 32 GB speed: 2133 MHz type: DDR4 所以我试了一下,测试了一些表达式 (.*?):\s 在某些方面确实有效。正确地捕捉
Device-1: P0_Node0_Channel0_Dimm0 size: 32 GB speed: 2133 MHz type: DDR4
我想从这个字符串中提取信息,最好是这样:
Device-1: P0_Node0_Channel0_Dimm0
size: 32 GB
speed: 2133 MHz
type: DDR4
所以我试了一下,测试了一些表达式
(.*?):\s
在某些方面确实有效。正确地捕捉第一个参数名,但之后会弄乱空格
:\s(.*?)\s\w*?:!?
尽管这捕捉到了第三个参数值中的空白,但它只给出了第一个和第三个值。也没有参数名
有人知道我怎样才能达到预期的行为吗
注意:我在Excel VBA中执行此操作,不确定是否所有函数都受支持
谢谢您可以使用
([^\s:]+):\s*(.*?)\s*(?=[^\s:]+:|$)
见
详细信息
-第1组:除空格和([^\s:]+)
之外的一个或多个字符:
-冒号:
-零个或多个空格\s*
-第2组:除换行符以外的任何0+字符,直到第一次出现。。。(.*)
-零个或多个空格后跟\s*
-除空格和(?=[^\s::+:|$)
或字符串结尾之外的一个或多个字符:
- 这是一个Autoit示例:
#include <Array.au3>
Local $str = 'Device-1: P0_Node0_Channel0_Dimm0 size: 32 GB speed: 2133 MHz type: DDR4'
$r_A = StringRegExp($str, '([\w-]*\:)\s*(\w*\s|.*)', 3)
ConsoleWrite(_ArrayToString($r_A, @CR) & @crlf)
#包括
本地$str='设备-1:P0\U节点0\U通道0\U Dimm0大小:32 GB速度:2133 MHz类型:DDR4'
$r\u A=StringRegExp($str,([\w-]*\:)\s*(\w*\s |.*),3)
控制台写入(_ArrayToString($r_A,@CR)和@crlf)
太棒了,谢谢!我刚刚编辑了答案,删除了第二组比赛结束时的空格。答案被接受。由于6个字符的限制,我不得不用“use”编辑“may”。@CuttingWide:对不起,你是想编辑到([^\s:]+):\s*(.*)\s*(?=[^\s:]+:|$)
?我编辑了答案。