Regex 使用正则表达式检查字符串中的第三个字符

Regex 使用正则表达式检查字符串中的第三个字符,regex,cocoa,ios5,nspredicate,Regex,Cocoa,Ios5,Nspredicate,我必须检查字符串中的第三个字符。我正试着用NSPredicate做这件事。我认为正则表达式应该是..3*,所以它会找到每个第三个字符为3的字符串。但它不起作用,我也尝试了其他一些方法,但没有成功:(。有人能帮我吗 检查的简单代码 - (IBAction)btnCheckPerformClick:(id)sender { _chkOk.state = NO; NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF like[

我必须检查字符串中的第三个字符。我正试着用NSPredicate做这件事。我认为正则表达式应该是..3*,所以它会找到每个第三个字符为3的字符串。但它不起作用,我也尝试了其他一些方法,但没有成功:(。有人能帮我吗

检查的简单代码

- (IBAction)btnCheckPerformClick:(id)sender {
_chkOk.state = NO;
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF like[c] %@", _txtRegExpression.stringValue];
NSLog(@"%@", predicate);
if([predicate evaluateWithObject:_txtCheckingText.stringValue])
    _chkOk.state = YES;
}

谢谢

您又少了一个点-使用
.3.*
。您可能还想使用
^..3.*$
将其锚定到字符串的开头和结尾。您又少了一个点-使用
.3.*
将其锚定到字符串的开头和结尾>..3*表示输入中任意位置的任意两个字符后跟可选3。您需要
^..3
,即从行首开始的任意两个字符后跟3。

.3*
表示输入中任意位置的任意两个字符后跟可选3。您想要
^..3
,即任何字符两个字符后跟3,从行首开始

..3*
那个正则表达式不能满足您的需要

上面写着,任意两个字符,然后是任意数量的3(包括no 3)

这个怎么样

^..3.*$
那个正则表达式不能满足您的需要

上面写着,任意两个字符,然后是任意数量的3(包括no 3)

这个怎么样

^..3.*$

谓词格式语言中的
LIKE
运算符只理解简单的通配符(
*
)。如果要使用正则表达式,需要使用
匹配

有关更多详细信息,请参阅


或者,使用
NSRegularExpression
谓词格式语言中的
LIKE
运算符只能理解简单的通配符(
*
)。如果要使用正则表达式,则需要使用
匹配

有关更多详细信息,请参阅


可选的,使用<代码> NStReReasXPress < /C> >

< P>您也可以考虑使用<代码> NScord方法>代码>子字符串WiRange: 如果您对正则表达式感到不舒服,不要急于使用它。使用一些有效的方法。Cocoa的正则表达式实现不是最容易开始的。 抓起你的绳子,然后和任何东西比较。 您可以在字符串上循环以同样容易地获得每3个字符

NSString *aString = @"abc";
NSString *thirdCharacterOnly;
if (aString.length >= 3) {

    for (NSUInteger i = 2; i < aString.length; i += 3) {
        thirdCharacterOnly = [aString substringWithRange:NSMakeRange(2, 1)];
        if ([thirdCharacterOnly isEqualToString:@"3"]) {
                // Do something.
        }
    }

} else {
        // do something different.
}
NSString*aString=@“abc”;
NSString*仅限第三个字符;
如果(aString.length>=3){
对于(整数i=2;i

如果你想要更多的正则表达式GET。3章会让你加快速度。先学习露比、Python或Perl的正则表达式。它会节省你的大脑。

你也可以考虑使用<代码> NScord方法>代码>子字符串WiRange: 如果您对正则表达式感到不舒服,不要急于使用它。使用一些有效的方法。Cocoa的正则表达式实现不是最容易开始的。 抓起你的绳子,然后和任何东西比较。 您可以在字符串上循环以同样容易地获得每3个字符

NSString *aString = @"abc";
NSString *thirdCharacterOnly;
if (aString.length >= 3) {

    for (NSUInteger i = 2; i < aString.length; i += 3) {
        thirdCharacterOnly = [aString substringWithRange:NSMakeRange(2, 1)];
        if ([thirdCharacterOnly isEqualToString:@"3"]) {
                // Do something.
        }
    }

} else {
        // do something different.
}
NSString*aString=@“abc”;
NSString*仅限第三个字符;
如果(aString.length>=3){
对于(整数i=2;i

如果你想了解更多关于正则表达式的内容,请阅读。3章将帮助你提高速度。首先使用Ruby、Python或Perl学习正则表达式。这将节省你的大脑。

你不需要在正则表达式末尾使用
*$
,它对这个用例没有任何作用。可能没有,但在处理多行inp时可能会有所不同uts.
Predicate:SELF-LIKE[c]“^..3.*$”SearchingText:aa3aaa
相同,不起作用。您不需要在该正则表达式末尾使用
.*$
,它对此用例没有任何作用。可能没有,但在处理多行输入时可能会有所不同。
Predicate:SELF-LIKE[c]“^..3.*$”SearchingText:aa3aaa
相同,不起作用。
谓词:SELF-LIKE[c]“^..3”SearchingText:aa3aaa
不起作用@omz注意到,正则表达式需要使用匹配项而不是LIKE。
谓词:SELF-LIKE[c]“^..3”SearchingText:aa3aaa
不能像@omz所说的那样工作,你需要使用匹配项而不是正则表达式。很好,它使用的是
.3.*
。我也在尝试,但只是使用
.3*
如果你只使用
.3
作为正则表达式,它将匹配blahblah3blah。确保你按照我的ans锚定它答案是不真实的。
.3
将只匹配
aa3
而不是
aa3a
aaaaaa3a
。很好,它与
.3.*
一起工作。我也尝试过这一点,但仅与
.3*
匹配。如果您只使用
.3
作为正则表达式,它将匹配blahblah3blah。请确保按照我的答案锚定它。不是真的。
.3
将只匹配
aa3
而不是
aa3a
aaaaaa3a