我在读取字符串的图像路径时遇到问题,例如 - >背景图像:网址(/assets/test.jpg)
我想把括号内的字符串放在括号内。
以下是我使用的代码:
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\\bbackground-image:url\(.*\)\\b" options:NSRegularExpressionCaseInsensitive error:nil];
thumbnail = [regex stringByReplacingMatchesInString:thumbnail options:0 range:NSMakeRange(0, [thumbnail length]) withTemplate:@"$1"];
我得到的是(/assets/test.jpg)
答案 0 :(得分:3)
使用以下模式获取结果:
background-image:url\\((.*)\\)
应用于您的代码:
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"background-image:url\\((.*)\\)" options:NSRegularExpressionCaseInsensitive error:nil];
使用此结果将是“/assets/test.jpg”,就像您希望的那样。
你的代码应该给你一个关于“\(”的未知转义序列的警告。你必须使用“\\(”来逃避“(”。也可以在开头摆脱“\\ b”并结束你的模式。
但请注意,此模式仅在您的字符串仅包含“background-image:url(somevaluehere)”
时才有效编辑:
\\ b是什么意思?
\\ b是一个单词边界,通常表示为\ b。在NSString中,您需要编写\\ b,因为您需要转义\,因此它将被视为真正的反斜杠。
这里有一些关于单词边界匹配的信息:
有三种不同的职位符合词边界:
- 在字符串中的第一个字符之前,如果第一个字符是a 字符。
- 在字符串中的最后一个字符之后,如果最后一个字符是单词字符。
- 字符串中的两个字符之间,其中一个是单词字符,另一个不是单词字符。
简单地说:\ b允许您使用执行“仅限整个单词”搜索 \ bword \ b形式的正则表达式。 “单词字符”是一个 可用于形成单词的字符。所有不是的字符 “单词字符”是“非单词字符”。
取自http://www.regular-expressions.info/wordboundaries.html
我希望这会澄清一点。
答案 1 :(得分:0)
我相信您应该将正则表达式更改为\\bbackground-image:url\((.*)\)\\b
。
我添加了()。*来捕捉你想要的匹配。