我正在将tcl正则表达式应用于这两个数据,我想提取第二列数据:
1: Common point: rt123_345_no/qwe_rty/sdf34x56/CFR
2: Common point: NA
此正则表达式适用于第一个数据,但不适用于第二个数据:
regexp -inline -expanded -- {Common\spoint:\s+?(\S+)\s+} $line
我不明白为什么正则表达式不会起作用。请指教。
答案 0 :(得分:3)
有两个问题:
NA
之后没有空格,因此,最后\s+
将无法通过此处的匹配失败\s+?
延迟模式设置分支的贪婪,\S+
将表现为\S+?
,仅从N
中捕获NA
+?
{ {1}}延迟量词使正则表达式引擎匹配尽可能少的匹配量化模式的字符。使用
Common\spoint:\s+(\S+)