regex - 如何编写不匹配一定量空格的正则表达式?

标签 regex whitespace

我正在尝试编写一个不会匹配一定数量空格的正则表达式,但它并没有按照我预期的方式进行。

我有这些字符串:

123      99999 # has 6 white spaces
321      99999 # same
123   8888    # has 3 white spaces  \
321   8888    # same                | - These are the lines I
1237777                             |   want to match
3217777                             /

我想匹配最后四行,即以 123 或 321 开头,后跟除 6 个空白字符之外的任何字符:

^(123|321)[^\ ]{6}.*

这似乎不起作用 - 这只匹配最后两个。我错过了什么?

最佳答案

"   888"

如果你匹配这个,这与[^\]{6}不匹配:这就是说

[not a space][not a space][not a space][not a space][not a space][not a space]

在这种情况下,您遇到的问题是前 3 个字符是空格,因此它不正确匹配。

您可以使用负前瞻^(123)|(321)(?!\s{6})。我更喜欢的是编写正则表达式来匹配您不想要的内容,因为它更具可读性,然后求反(即 not! 等) 。我对您的数据了解不够,但我会使用 \s{6},然后否定它。

关于regex - 如何编写不匹配一定量空格的正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7729555/

相关文章:

python - 为什么在该组中捕获逗号?

python - Pandas str.extract : AttributeError: 'str' object has no attribute 'str'

ASP.NET Youtube channel 正则表达式

jsf - 如何防止空格形成 JSF h :inputText

html - 如何在 Internet Explorer 的预标记中包装文本?

python - 数据库列中的换行符和空格

javascript - 替代包含元素之间空格的 jQuery text()?

javascript - 正则表达式接受至少 6 个字符,至少一个字母和以下至少之一 : 0123456789-. @_

php - 使用 preg_replace 替换字符,除非前面有转义字符

javascript - 需要在javascript中保留空格