REGEX-多个匹配,结肠和空空间

  • 本文关键字:空间 REGEX- 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

确实有些考虑。正确捕获第一个参数名称,但之后与空间混乱。

:s(.*?)sw*?:!?

尽管这在第三个参数值中捕获了空白空间,但它仅给了我第一个和第三个值。也没有参数名称。

有人知道我如何实现预期的行为?

注意:我正在Excel VBA中这样做,不确定是否支持所有功能。

谢谢

您可以使用

([^s:]+):s*(.*?)s*(?=[^s:]+:|$)

请参阅Regex Demo

详细信息

  • ([^s:]+)-第1组:Whitespace和:
  • 以外的一个或多个字符
  • : -a colon
  • s*-零或更多的whitespaces
  • (.*?)-第2组:除了line Break Chars以外的任何0 字符,直到第一次出现...
    • s*-随后是...
    • (?=[^s:]+:|$)-除whitespace和 :以外的一个或多个字符或字符串结束

这是一个自动示例:

#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)

最新更新