2014-07-16 69 views
0

我需要一点帮助。我正在想出一个正则表达式来匹配一串数字。我希望字符串匹配从字符串的位置值开始匹配。tcl正则表达式匹配一串基于字符串索引的数字字符串

这里是字符串我有

01102000000000001A40000000200000000000100012064000100000000000000 

我想正则表达式匹配从字符串的值20,或直接在A4之后开始。我也想匹配字符串的第20个值之后的第一个10位数字。我尝试了一些他们没有真正工作的东西。想看看我能否在这里得到一些想法。

+0

为什么你使用正则表达式,如果你只想从位置20的10个字符? TCL似乎支持string.range做到这一点...... – TessellatingHeckler

+0

其实我已经试过了字符串范围。显然这是所有的一个巨型字符lindex匹配0 01102000000000001A40000000200000000000100012064000100000000000000如果你看到lindex值0是这整个字符串。我需要找到一种方法来打破字符串的打破。这就是为什么我想在这里使用regexp更容易。 – Matt

+0

@Matt:'lindex'命令用于从列表中获取元素。查找'string'命令,特别是'string range',它可以完成你想做的事情。 –

回答

3

如果TessellatingHeckler答案中的链接过时,我会在实际代码中添加另一个答案。至少有三种解决这个问题(假设在搜索的字符串是在变量s):

TessellatingHeckler的解决方案:

lindex [regexp -inline {.{19}(\d{10})} $s] 1 

另一个regexp解决方案:

regexp -inline -start 19 {\d{10}} $s 

一个string range解决方案:

string range $s 19 19+9 

文档:lindex,regexp,string

2

一个正则表达式的第19个字符匹配,以A4和扔掉,然后后,捕捉10个数字为一组:

.{19}(\d{10}) 

http://regex101.com/r/cO9bE7/1

(我不知道这是否是但是TCL兼容)。

+0

这是一种可能性,如果我不能以另一种方式去做,我就会去尝试。我不确定TCL正则表达式是否支持匹配位置值,然后是范围。但是你的建议也是我曾经想过的。感谢您的建议。 – Matt

+0

嗨刚刚尝试过,这是TCL兼容,所以感谢您的帮助。我很欣赏这一点。 – Matt

+0

这是一个链接唯一的答案,因此应该发布为评论而不是实际的答案。请确保人们可以单独使用我们的答案,而不需要解决方案的任何链接,并仅使用链接获取额外信息。 – Jerry

相关问题