我需要处理一个随机字符串,其间有“..”字符。如下所示
a..b/c..de/f-g..xyz..abc..def..123..
如何使用regexp获取这些“..”之间的数据?(此字符串可以是任意长度,我需要获取每个中间数据集以进行进一步处理)。请指导我。
谢谢!
答案 0 :(得分:6)
如果有p.e.字符串中没有换行符,您可以通过以下方式获取字符串列表:
set in a..b/c..de/f-g..xyz..abc..def..123..
set out [split [string map {.. \n} $in] \n]]
答案 1 :(得分:1)
要考虑这种事情的一个工具,特别是如果分裂术语比问题中的术语更复杂,则the textutil::split
package in Tcllib。这允许您通过正则表达式拆分字符串,如下所示:
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
列表的末尾生成一个空元素,因为它有一个终止分隔符。
答案 2 :(得分:0)
您可以使用此正则表达式:
[^..]
这将匹配所有不是..
的字符。