为什么/ [^ un] *成功$ /匹配“任务:不成功”,但/ [^ un] +成功$ /不?

时间:2015-06-29 19:25:41

标签: regex regex-negation regex-greedy

我正在学习正则表达式。如果*表示0或更多匹配,+表示1或更多匹配,那么这些正则表达式短语不应该与字符串不匹配吗?

3 个答案:

答案 0 :(得分:4)

[^un]表示匹配un以外的任何字符。所以[^un]*succesful匹配,因为它重复了0次。 [^un]+successful会失败,因为在成功之前会有一个n字符。

答案 1 :(得分:2)

因为[^un]表示“不是你或否”,而*表示0或更多(正如您所知......) 在这种情况下,有0次出现“not u或n”后跟“success”,所以匹配。 +(1或更多)不会导致没有任何此类事件发生。

答案 2 :(得分:0)

由于 "使命:不成功"不会以"不成功"。

开头

[^ un] 成功只是因为它匹配"成功"因为[^ un] 对于#34;任务:不成功"因为正则表达式通常只适用于" -successful"无论[^ un] *的有效性如何。

[^ un] +成功意味着它必须也以un - 开头。

所以只需删除^,它应该像这样匹配 [未] +成功$

或(联合国)?成功的$哪个更好。