这看起来像是一个潜在的正则表达式错误,这类错误总是有点棘手。@zogstrip 也许你可以看一下,因为你最近在这个领域工作过(尽管这似乎已经存在一段时间了)。
我的理解是这样的……
当我们检查单词时,有 3 个部分必须匹配:前导、单词、尾随。我们将前导和尾随设置为非字母字符……这些可以是标点符号、空格,或者数字。数字是导致匹配出错的原因。本意是即使单词前后有标点符号或其他字符,也能捕获到该单词。
所以正则表达式看到了 123Test,找到了 Test,查看它前面发现 3,这匹配为一个“非字母”,然后查看后面发现单词的结尾。因此它匹配了 3Test。
我认为我们需要检查前导/尾随部分中的非字母和非数字字符,以避免这种情况?不确定我们没有包含数字的原因,还是这只是一个疏忽。