我需要处理一个中间有字符“..”的随机字符串。就像下图一样
a..b/c..de/fg..xyz..abc..def..123..
如何使用正则表达式获取这些“..”之间的数据?(此字符串可以是任意长度,我需要获取每个中间数据集以进行进一步处理)。请指导我。
谢谢!
如果字符串中没有 pe 换行符,您可以使用以下命令获取字符串列表:
set in a..b/c..de/f-g..xyz..abc..def..123..
set out [split [string map {.. \n} $in] \n]]
对于这类事情要考虑的一个工具是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
列表末尾产生一个空元素,因为有一个终止分隔符。
你可以使用这个正则表达式:
[^..]
这将匹配所有不是..
.