为什么这个正则表达式表现得像这样?

时间:2010-02-06 05:36:42

标签: regex

我有一个正则表达式here,我希望它只返回 用户,评论和帖子。但是,即使我有\s,空格,在我的负字符集中,它仍然从中提取匹配。这是为什么?

3 个答案:

答案 0 :(得分:1)

它匹配空位置(零长度字符串),而不是空格,这是因为你使用的是星号(零或更多)而不是加号(一个或多个)重复修饰符。 ([^.,()\s]+)仅返回“用户”,“评论”和“帖子”。

答案 1 :(得分:1)

似乎与任何空格字符都不匹配,只是一个位置,因为*将匹配长度为0的字符串。 试试([^\s().,]+)

答案 2 :(得分:1)

是的,因为+ 这是一个提供每个参数的动力正则表达式 $ 1 =用户 $ 2 =评论 $ 3 =帖子

(([^。,()\ s] +)。(([^。,()\ s] +),([^。,()\ s] +)))

但当然,不能存在带有这些保留字符的评论或帖子

或者这是一个更灵活的例子 (([^。,()\ S] +)。(\ S *([^。,()\ S] +)\ S *,\ S *([^。,()\ S] +)\ S *))