如何从开头和结尾包含#但结尾没有space的字符串中获取主题标签?
How to get hashtag from string that contains # at the beginning and end without space at the end?
这是我的字符串
"I made this wonderful pic last #chRistmas... #instagram #nofilter #snow #fun"
并且我想获得开头和结尾都包含#但没有space的主题标签。我的预期结果是:
$fun
这是我到目前为止的正则表达式搜索:
#[a-z0-9]+
但它给了我所有的标签,而不是我想要的标签。感谢您的帮助!
使用 #[a-zA-Z0-9]*$
而不是当前的正则表达式
您可以使用:
(^#[a-z0-9]+|#[a-z0-9]+$)
测试一下online
您似乎需要匹配字符串末尾的主题标签,或字符串中的最后一个主题标签。所以,有几种方法可以解决这个问题。
匹配字符串中的最后一个主题标签
let str = "I made this wonderful pic last #chRistmas... #instagram #nofilter #snow #fun"
let regex = "#[[:alnum:]]++(?!.*#[[:alnum:]])"
if let range = str.range(of: regex, options: .regularExpression) {
let text: String = String(str[range])
print(text)
}
详情
#
- 哈希符号
[[:alnum:]]++
- 1 个或多个字母数字字符
(?!.*#[[:alnum:]])
- 没有 #
+ 1+ 个字母数字字符在任何 0+ 个字符之后,而不是紧邻当前位置右侧的换行符字符。
匹配字符串末尾的主题标签
相同的代码,但具有以下正则表达式:
let regex = "#[[:alnum:]]+$"
或
let regex = "#[[:alnum:]]+\z"
注意 \z
匹配字符串的末尾,如果主题标签和字符串末尾之间有换行符,则不会有任何匹配(在 $
的情况下, 会有一场比赛)。
关于正则表达式的注意事项
如果主题标签只应以字母开头,最好使用
#[[:alpha:]][[:alnum:]]*
其中 [[:alpha:]]
匹配任意字母,[[:alnum:]]*
匹配 0+ 个字母 or/and 数字。
请注意,在 ICU 正则表达式模式中,您可以将 [[:alnum:]]
写为 [:alnum:]
。
这是我的字符串
"I made this wonderful pic last #chRistmas... #instagram #nofilter #snow #fun"
并且我想获得开头和结尾都包含#但没有space的主题标签。我的预期结果是:
$fun
这是我到目前为止的正则表达式搜索:
#[a-z0-9]+
但它给了我所有的标签,而不是我想要的标签。感谢您的帮助!
使用 #[a-zA-Z0-9]*$
而不是当前的正则表达式
您可以使用:
(^#[a-z0-9]+|#[a-z0-9]+$)
测试一下online
您似乎需要匹配字符串末尾的主题标签,或字符串中的最后一个主题标签。所以,有几种方法可以解决这个问题。
匹配字符串中的最后一个主题标签
let str = "I made this wonderful pic last #chRistmas... #instagram #nofilter #snow #fun"
let regex = "#[[:alnum:]]++(?!.*#[[:alnum:]])"
if let range = str.range(of: regex, options: .regularExpression) {
let text: String = String(str[range])
print(text)
}
详情
#
- 哈希符号[[:alnum:]]++
- 1 个或多个字母数字字符(?!.*#[[:alnum:]])
- 没有#
+ 1+ 个字母数字字符在任何 0+ 个字符之后,而不是紧邻当前位置右侧的换行符字符。
匹配字符串末尾的主题标签
相同的代码,但具有以下正则表达式:
let regex = "#[[:alnum:]]+$"
或
let regex = "#[[:alnum:]]+\z"
注意 \z
匹配字符串的末尾,如果主题标签和字符串末尾之间有换行符,则不会有任何匹配(在 $
的情况下, 会有一场比赛)。
关于正则表达式的注意事项
如果主题标签只应以字母开头,最好使用
#[[:alpha:]][[:alnum:]]*
其中 [[:alpha:]]
匹配任意字母,[[:alnum:]]*
匹配 0+ 个字母 or/and 数字。
请注意,在 ICU 正则表达式模式中,您可以将 [[:alnum:]]
写为 [:alnum:]
。