我正在尝试检测以下表达式:$
例如
$john
要么
$mike
我的正则表达式有什么问题?
//Check for $symbol
NSRegularExpression *symbolRegex = [[NSRegularExpression alloc] initWithPattern:@"($[a-zA-Z0-9_]+)"
options:NSRegularExpressionCaseInsensitive
error:nil];
matches = [symbolRegex matchesInString:labelText options:0 range:NSMakeRange(0, [labelText length])];
for (NSTextCheckingResult *result in matches) {
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"symbol://%@",[labelText substringWithRange:result.range]]];
[bodyLabel addCustomLink:url inRange:[result range]];
}
[symbolRegex release];
最佳答案
看来您需要转义$。
(\\$[a-zA-Z0-9_]+)
$(美元)
在应用正则表达式模式的字符串的末尾匹配。
匹配位置而不是字符。大多数正则表达式口味都有
在换行符之前(即在末尾)使美元匹配的选项
文件中的一行)。在最后一行之前也匹配
如果字符串以换行符结尾,则中断。
由于它是特殊字符/保留字符,因此需要对其进行转义。
http://www.regular-expressions.info/reference.html