所以我收到的数据看起来像这样:
Applications 7 days 6 days
我正在尝试创建将与该行匹配但不与具有另一列的行匹配的正则表达式,如下所示:
Applications 7 days 6 days 5 days
我想使用的正则表达式是:
^(.*?)(\s){4,}(.*?)(\s){4,}[^(\s){2}]+
哪里[^(\s){2}]+
意味着选择所有内容,最多加倍。问题是
有什么我只能用来匹配3列表而不匹配4列,5列等的正则表达式吗?
您应注意字符类([]
),因为其中的某些字符将按字面意义对待(就像它们已被转义一样)。
试试这个正则表达式(此处为演示):
^((?:(?!\s\s).)+)(?:\s){4,}((?:(?!\s\s).)+)(?:\s){4,}((?:.(?!\s\s))+)$
(.*?)
与((?:(?!\s\s).)+)
将匹配一切都交给两个空间的序列。$
在末尾添加了a ,因此它与两列以上的行不匹配。?:
以便使这些组成为不匹配的组。这一行将不接受第二列以空格结尾的行(此处为demo):
^((?:(?!\s\s).)+)(?:\s){4,}((?:(?!\s\s).)+)(?:\s){4,}((?:.(?!\s\s)(?!\s$))+)$
请注意,在最后一组中还添加了第二个否定的提前查询(?!\s$)
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句