用于检测非空白的TCL regexp
我将tcl正则表达式应用于这2个数据,我想提取第2列数据:用于检测非空白的TCL regexp,regex,tcl,Regex,Tcl,我将tcl正则表达式应用于这2个数据,我想提取第2列数据: 1: Common point: rt123_345_no/qwe_rty/sdf34x56/CFR 2: Common point: NA 此正则表达式适用于第一个数据,但不适用于第二个数据: regexp -inline -expanded -- {Common\spoint:\s+?(\S+)\s+} $line 我不明白为什么正则表达式不起作用。请告知。有两个问题: NA之后没有空格,因此,最后一个\s+无论如何都会使匹
1: Common point: rt123_345_no/qwe_rty/sdf34x56/CFR
2: Common point: NA
此正则表达式适用于第一个数据,但不适用于第二个数据:
regexp -inline -expanded -- {Common\spoint:\s+?(\S+)\s+} $line
我不明白为什么正则表达式不起作用。请告知。有两个问题:
之后没有空格,因此,最后一个NA
无论如何都会使匹配失败\s+
惰性模式设置分支的贪婪性,\s+?
将表现为\s+
,只从\s+?
捕获一个NA
,因为N
惰性量词使正则表达式引擎尽可能少地匹配量化模式的字符+?
我会在RE的末尾加上一个
\y
,以强制匹配在单词边界上停止()@DonalFellows是的,可能。此外,如果必须有空格或字符串结尾,则\s+
可以替换为(?:\s+\Z)
,甚至可以替换为类似(?!\s)
的前瞻。对于当前场景。
Common\spoint:\s+(\S+)