我需要处理一个介于两者之间的字符".."的随机字符串。如下所示
一个。。b/c..德/法-格.xyz..美国广播公司..定义..123
..如何使用正则表达式获取这些".."之间的数据?(此字符串可以是任意长度,我需要获取每个中间数据集以进行进一步处理)。请用这个指导我。
谢谢!
如果字符串中没有换行符,您可以通过以下方式获得字符串列表:
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
列表的末尾生成一个空元素,因为有一个终止分隔符。
您可以使用此正则表达式:
[^..]
这将匹配所有未..
的字符。