使用正则表达式删除包含超过X值的行

时间:2009-08-02 23:17:06

标签: regex

我正在用正则表达式构建一个Mysql插件。

这是插件到目前为止的样子:

(#text1#,#text2#,#text3#,#text4#,#text5#,#text6#, #text7#, #text8#, #text9#), (#text1#,#text2#,#text3#,#text4#,#text5#,#text6#, #text7#, #text8#, #text9#), (#text1#,#text2#,#text3#,#text4#,#text5#,#text6#, #text7#, #text8#, #text9#);

在上一个问题中,有人帮我写了这个正则表达式来删除比上面例子小的值

var stripped30 = htstring30.replace(/\((?:[^#\n]*?#[^#\n]*?#[,\s]?){0,8}\)[,;]\s*/ig, '');

这将删除下面的例外并删除它,只留下我想要的9个表。

(#text1#,#text2#,#text3#,#text4#,#text5#,#text6#), 

现在我基本上想要做同样的事情,但这一次删除了大于9的所有异常 - 任何人都可以帮我做这件事。

(#text1#,#text2#,#text3#,#text4#,#text5#,#text6#, #text7#, #text8#, #text9#),
(#text1#,#text2#,#text3#,#text4#,#text5#,#text6#, #text7#, #text8#, #text9#,  #text10#),
(#text1#,#text2#,#text3#,#text4#,#text5#,#text6#, #text7#, #text8#, #text9#,  #text10#,  #text11#);
(#text1#,#text2#,#text3#,#text4#,#text5#,#text6#, #text7#, #text8#, #text9#),
(#text1#,#text2#,#text3#,#text4#,#text5#,#text6#, #text7#, #text8#, #text9#),
(#text1#,#text2#,#text3#,#text4#,#text5#,#text6#, #text7#, #text8#, #text9#);

因此当存在大于9的异常时,我可以将其删除

2 个答案:

答案 0 :(得分:1)

您可以使用此正则表达式删除没有9个条目的每一行:

/^(?!\s*\((?:#[^#\n]*#(?:\s*,\s*#[^#\n]*#){8})\)[,;]\s*$).*/mg

答案 1 :(得分:0)

你可以尝试以下方法:

var stripped30 = htstring30.replace(/\((?:[^#\n]*?#[^#\n]*?#[,\s]?){10,}\)[,;]\s*/ig, '');

10,后的空白表示没有上限。

修改

使用my answer from the previous question,但按照上面的示例更新它,对我来说,产生了良好的效果:

\(([\s]*#[^#]+#[\s]*,?){10,}\)[,;]*

让我知道你的表现。