2

每次我需要使用正则表达式时,我意识到我已经忘记了关于它们的一切。

我正在尝试匹配所有只有小写字母数字字符且没有双倍字母数字字符且长度也在 {10,12} 个字符内的单词。

现在,要弄清楚一个字符后面是否跟着同一个字符,我会做(.)\1. 要查看一个单词是否在 10 到 12 个字符之内,我会这样做{10,12}。要只抓取小写字母和数字,我会使用[0-9a-z].

但是我如何将它们链接在一起呢?

干杯!

PS:这将在相当大的 NLP xml (100mb+) 上运行,所以如果正则表达式不是最慢的替代方案,我将不胜感激。

4

3 回答 3

3

我认为这会做你想要的: -

/\b(?:([a-z0-9])(?!\1)){10,12}\b/

解释: -

\b   // Word boundary
(?:
    ([a-z0-9])  // Match lowercase letters or digit
    (?!\1)      // Not followed by the same digit as before
){10,12}        // 10 to 12 times.
\b   // Word boundary
于 2013-01-31T19:58:43.457 回答
2

这是一个,虽然我不确定不会有更好的方法......

/\b(?:([a-z0-9])(?!\1)){10,12}\b/
于 2013-01-31T20:00:12.327 回答
1

这是我的尝试:

 (\b(?![0-9a-z]*([0-9a-z])\2)[0-9a-z]{10,12}\b)

(我们必须使用前瞻,并且某种边界通常对其正常运行非常重要。因此\b)。

在撰写本文时,另一个答案有误报,与eoeuaoarounn

于 2013-01-31T20:01:48.837 回答