我正在尝试编写一个不会匹配一定数量空格的正则表达式,但它并没有按照我预期的方式进行。
我有这些字符串:
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/