我目前正在尝试限制匹配主题标签的字符数。 我想只在少于25个字符的情况下才匹配主题标签。
这就是我所拥有的(没有限制):
regex = [[NSRegularExpression alloc] initWithPattern:@"(#+[\\S\\_]+)?" options:0 error:&error];
我尝试了类似的东西,但没有成功:
regex = [[NSRegularExpression alloc] initWithPattern:@"(#+[\\S\\_]{0,10})?" options:0 error:&error];
如果我启动这样的代码,主题标签是匹配的,但它们会被删除。
如果主题标签超过25个字符,我想完全不匹配;我尝试在$
之后添加{0,10}
,但它无效。
答案 0 :(得分:0)
我认为这应该有效:
let pat = "^#[^#\\s]{1,10}$"
let testStr = "#asd"
let regex = try! NSRegularExpression(pattern: pat, options: [])
let matches = regex.matches(in: testStr, options: [], range: NSRange(testStr.startIndex..., in: testStr))
matches.count
答案 1 :(得分:0)
您可以使用以下正则表达式:
initWithPattern:@"#\\S{1,25}(?!\\S)"
请参阅regex demo。
<强>详情
#
- #
符号\S{1,25}
- 1到25个非空白字符(?!\S)
- 当前位置右侧不允许使用非空白字符。正则表达式引擎将匹配#
,然后将尝试获取25个非空白字符(如果有更少,它将回溯以匹配更少,但至少1个非空白字符)然后将尝试断言在非空格字符之后有一个空格或字符串结尾。