每当我需要使用正则表达式时,我意识到我已经忘记了关于它们的一切。
我正在尝试匹配所有只包含小写字母数字字符并且没有加倍的字母数字字符并且长度也在{10,12}个字符以内的字词。
现在,为了弄清楚一个角色是否跟有相同的角色,我会做(.)\1
。要查看单词是否在10个和12个字符内,我会{10,12}
。要只抓取小写字母和数字,我会[0-9a-z]
。
但我如何将它们链接在一起?
干杯!
PS:这将在一个相当大的NLP xml(100mb +)上运行,所以如果正则表达式不是最慢的选择,我将不胜感激。
答案 0 :(得分: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
答案 1 :(得分:2)
这是一个,虽然我不确定会有更好的方法......
/\b(?:([a-z0-9])(?!\1)){10,12}\b/
答案 2 :(得分:1)
这是我的尝试:
(\b(?![0-9a-z]*([0-9a-z])\2)[0-9a-z]{10,12}\b)
(我们必须使用前瞻,并且某种边界对于它正常运作通常非常重要。因此\b
)。
在撰写本文时,另一个答案有误报,与eoeuaoarounn
的部分相匹配