0

我正在尝试创建一个简单的正则表达式,它将删除文本块中三个点之后的任何内容。不知道我应该使用什么符号,因为第一部分将不止字母和数字

例如,如果我通过

任何东西都可以在三个点之前进行 $ NC >> ... 这应该被淘汰 d& < >

我应该得到

任何东西都可以在三个点之前进行 $ 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 使用点作为特殊字符。

于 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 回答