「..」という文字が間にあるランダムな文字列を処理する必要があります。以下のように
a..b / c..de/fg..xyz..abc..def..123。。
正規表現を使用してこれらの「..」間のデータを取得するにはどうすればよいですか?(この文字列は任意の長さにすることができ、さらに処理するために各中間データセットを取得する必要があります)。これで案内してください。
ありがとう!
文字列に改行がない場合は、次の文字列のリストを取得できます。
set in a..b/c..de/f-g..xyz..abc..def..123..
set out [split [string map {.. \n} $in] \n]]
この種のことを考慮するための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
、終了セパレーターがあるため、リストの最後に空の要素も生成されます。
この正規表現を使用できます:
[^..]
これは、ではないすべての文字に一致します..
。