gpt4 book ai didi

regex - 正则表达式仅匹配小写字母

转载 作者:行者123 更新时间:2023-12-03 17:33:46 25 4
gpt4 key购买 nike

我正在尝试将仅包含 a-z 中的字符的所有字符串与 Objective C 中的正则表达式进行匹配。我在网上找到了几个建议的解决方案,但似乎没有一个真正有效(或者我可能遗漏了一些东西)。

我尝试了以下方法,但不明白为什么它不起作用:

NSError *error = NULL;
NSRegularExpression *regex =[NSRegularExpression regularExpressionWithPattern:@"[a-z]*\\b" options:NSRegularExpressionCaseInsensitive error:&error];
NSUInteger numberOfMatches = 0;


NSString* testword = @"testword";

numberOfMatches = [regex numberOfMatchesInString:testword
options:0
range:NSMakeRange(0, [testword length])];

NSLog(@"%@ %i", testword, (int)numberOfMatches);

输出为:testword 2。

我希望了解正则表达式,并且我知道还有其他方法可以解决我的问题,因此请不要使用其他方法给出解决方案。谢谢!

最佳答案

问题出在正则表达式中 *\\b 的组合

\b 匹配单词边界且长度为 0
[a-z]* 长度可以为 0 到任意值

所以第一个匹配是“testword”+ wordboundary
第二个匹配是 ""+ wordboundary

解决方法是通过将 * 更改为 + 来要求至少一个字母

\b 也将在标点符号之前匹配。由于您在“单词”中包含标点符号,因此您不能再使用单词边界(\b)。在这种情况下,空格或字符串结尾起作用。您还需要添加字符串开头或空格才能工作。

(?:^|\\s)[a-z]+(?:\\s|$)

根据您想要小写字母的陈述,仅存在第二个问题。 NSRegularExpression 是使用 NSRegularExpressionCaseInsensitive 选项构造的。如果您真正关心大小写,则应该使用 0。

关于regex - 正则表达式仅匹配小写字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29219625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com