【发布时间】:2016-03-27 06:34:52
【问题描述】:
我有以下模式
Pattern[1]:
Key : "key1"
Value : 100
Pattern[2]:
Key : "key2"
Value : 20
Pattern[3]:
Key : "key3"
Value : 30
Pattern[4]:
Key : "key4"
Value : 220
我想隔离每个 Pattern 块。我正在使用 TCL 。我正在使用的正则表达式无法解决目的
set updateList [regexp -all -inline {Pattern\[\d+\].*?Value.*?\n} $list]
使用哪个正则表达式来隔离每个模式
我需要输出为
Pattern[1]:
Key : "key1"
Value : 100
Pattern[2]:
Key : "key2"
Value : 20
Pattern[3]:
Key : "key3"
Value : 30
Pattern[4]:
Key : "key4"
Value : 220
【问题讨论】:
-
或许,
Pattern\[\d+\]:\s*Key.*\s*Value.* -
@WiktorStribiżew:它不工作
-
set updateList [regexp -all -inline {Pattern\[[0-9]+\]:\s*Key[^\n]*\s*Value[^\n]*} $str]是。一个点与 Tcl 中的换行符匹配,这就是上面那个不起作用的原因。 -
查看 Wiktor 的回答:您只需将
\d+更改为\d+? -
@glennjackman:差不多。