0

テキストのブロック内の3つのドットの後のすべてを削除する単純な正規表現を作成しようとしています。最初の部分にはアルファベットと数字以上のものがあるので、どの記号を使用すべきかわかりません

たとえば、私が渡す場合

3つのドットの前に何でも行くことができます$NC>> ...これは削除する必要がありますd&<>

私は得る必要があります

3つのドットの前に何でも行くことができます$NC>>

私は以下を持っています

([ここに何が表示されるかわからない])...([ここにあるもの])次のように置き換えます:$ 1

4

2 に答える 2

1

何を試したか、どの RE 構文を使用しているかは述べていないため、これは正しくない可能性がありますが、考え方は次のとおりです。

^\(.*\)\.\.\..*$

内訳:

^ - start of line
.* - zero or more of anything
\(.*\) - the above tagged
\.\.\. - three dots, escaped to match a literal dot
.*$ - anything else till end of line

私が言うように、あなたの構文はこれとまったく同じではないかもしれませんが、キーは、ほとんどの RE が特殊文字としてドットを使用するため、3 つのドットをエスケープしてリテラルにする必要があることです。

于 2012-07-04T00:01:43.633 に答える
1

ドットは任意の文字を表します。0+ 繰り返しのアスタリスク。So.*は、任意の長さの (オプションの) 文字列を表します。ドットを検索するには、ドットをエスケープする必要があります。

この式は、その後に 3 つのドットが続くものを検索します。.*\.\.\.

最後にオプションの文字列を追加します。.*\.\.\..*

次に、関心のある部分を囲みます:(.*)\.\.\..*に置き換え$1ます。私の知る限り、Cocoa では括弧をエスケープする必要はありませんが、100% 確実ではありません。

テキスト行を操作している場合は、^プレフィックスと$サフィックスを式に追加することもできます。

テストされていない提案:

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@".*\.\.\..*" options:nil error:&error];
[regex replaceMatchesInString:myString options:nil range:range withTemplate:@"$1"];
于 2012-07-04T00:05:26.460 に答える