我正在寻找一种解决方案,以知道行中是否最后一个特定的单词或数字,然后什么也没有,甚至没有空格

时间:2019-06-29 11:26:43

标签: regex tcl

set vv "abc 123 456 "

regexp {abc[\s][\d]+[\s][\d]+} $vv 
1
regexp {abc[\s][\d]+[\s][\d]+(?! )} $vv 
1

应返回0,因为该行的末尾包含额外的空格或额外的字符。

从行列表中,我试图知道哪些行的末尾有空格,哪些没有。

行可以是任何格式,例如,我需要提取第1行和第3行,但不能提取第2行和第4行。

  1. “ abc 123 456”
  2. “ abc 123 456 abc 999”
  3. “ xyz 123 999”
  4. “ xyz 123999 zzz 222”

5 个答案:

答案 0 :(得分:1)

正则表达式为{^abc.*\d$}-一个数字,后跟字符串的结尾。

% regex {^abc.*\d$} $vv
0

全局模式为{abc*[0-9]}

% string match {abc*[0-9]} $vv
0
% string match {abc*[0-9] } $vv
1

答案 1 :(得分:1)

您可以使用重复的模式来匹配空格和数字,以确保该行仅以数字结尾:

^abc(?: \d+)+$

Regex demo

或者如果行可以是任何格式,则使用单词\w进行更广泛的匹配:

^\w+(?: \w+)+$

Regex demo

答案 2 :(得分:0)

不确定TCL正则表达式,但我认为您必须添加一个锚点:

abc\s\d+\s\d+$

答案 3 :(得分:0)

可以概括为以单词(\ w)开头的行($)的结尾。

puts [regexp {\w$} $vv]

答案 4 :(得分:0)

如果您需要查找行是否以空格结尾,则将其用于正则表达式:

\s$