给定文字:
This is a #tag and this is another #love@irc.oftc.net and more text.
我想匹配以散列开头并以空格字符结尾的单词(我不想为 #love@irc.oftc.net
指定特定模式)。
我不能使用 lookarounds
并且不想使用 \b
。
我尝试了 #.*\b
、#.*\s
,这将比我要求的更多。我猜 *
也将匹配空格,因此最后一次检查被忽略。
我使用 https://regexr.com/用于测试。
最佳答案
你可以使用
#\S+
见 regex demo .
详情
#
-#
符号\S+
- 1 个或多个除空格以外的字符(也可以写为[^\s]*
,但\S
只是更短)。
作为一种可能的增强功能,您仍然可以考虑使用单词和非单词边界。例如,当你想避免匹配 abc#tagliketext
或者当你需要避免匹配标签末尾的标点符号时,你可以考虑使用
\B#\S+\b
见 another regex demo . \B
非单词边界如果在 #
之前有一个单词 char 将匹配失败,而 \b
将在最右边之前停止匹配非单词字符。
关于正则表达式匹配具有以散列开头并以空格结尾的特殊字符的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49298599/