2

我需要处理一个中间有字符“..”的随机字符串。就像下图一样

a..b/c..de/fg..xyz..abc..def..123..

如何使用正则表达式获取这些“..”之间的数据?(此字符串可以是任意长度,我需要获取每个中间数据集以进行进一步处理)。请指导我。

谢谢!

4

3 回答 3

6

如果字符串中没有 pe 换行符,您可以使用以下命令获取字符串列表:

set in a..b/c..de/f-g..xyz..abc..def..123..
set out [split [string map {.. \n} $in] \n]]
于 2012-10-24T19:30:33.937 回答
1

对于这类事情要考虑的一个工具是Tcllib中textutil::split包,特别是如果拆分项比问题中的那个更复杂。这使您可以通过正则表达式拆分字符串,如下所示:

package require textutil::split

set sample "a..b/c..de/f-g..xyz..abc..def..123.."
set RE {\.\.};  # “.” is an RE metacharacter, and so needs to be escaped
set pieces [textutil::split::splitx $sample $RE]

上面也会在pieces列表末尾产生一个空元素,因为有一个终止分隔符。

于 2012-10-25T08:37:40.763 回答
0

你可以使用这个正则表达式:

[^..]

这将匹配所有不是...

于 2012-10-24T20:01:37.910 回答