如何编写正则表达式,找到不包含某些字符(如*
或#
)和句子的单词(没有空格)(如level10
或{{1} } - 它也应该是正则表达式 - level2
)。排除的字符(level[0-9]+
)很简单,但如何排除此[^\\s^#^*]+
示例?
我想用数字排除字符和级别。
答案 0 :(得分:3)
请参阅此正则表达式:
/(?<=\s)(?!\S*[#*])(?!\S*level[0-9])\S+/
正则表达式解释:
(?<=\s)
在空白序列后断言位置。(?!\S*[#*])
断言&#34;#&#34; 或&#34; *&#34; 在序列中不存在。< / LI>
(?!\S*level[0-9])
断言 level[0-9]
在序列中不匹配。\S+
现在我们的条件传递了,这个序列是有效的。继续使用\S+
或\S++
来匹配整个序列。要更专注地使用前瞻,您可以添加另一个(?!\S*<false_to_assert>)
组。
对于这种特殊情况,您可以use a double negation trick:
/(?<=\s)(?!\S*level[0-9])[^\s#*]+(?=\s)/
了解详情:
答案 1 :(得分:-1)
您可以简单地使用竖线字符进行搜索
[^\s#*]+|level[0-9]+