如果字符串部分为31个字符或更长,则匹配字符串

时间:2018-06-17 16:37:28

标签: regex

我有一长串字符串,格式如下:

  • “astringsmaller alongstringthatisgreaterthan32characterstomatch”
  • “alongstringthatisgreaterthan32characterstomatch astringsmaller”
  • “astring string alongstringthatisgreaterthan32 598931”

使用正则表达式,如何使用空格分隔符匹配字符串大于31个字符的字符串?

例如,下面的字符串将“看到”为两部分,计数将为14和47因此是有效匹配。

  • “astringsmaller alongstringthatisgreaterthan32characterstomatch”

不幸的是,分隔符/空格的数量在位置或数量上并不一致。我还有一堆其他特殊字符被视为“分隔符”

("!")
("@")
('"')
("#")
("$")
("&")
("'")
("(")
(")")
("*")
("+")
(",")
(".")
("/")
(":")
(";")
("<")
("=")
(">")
("?")
("^")
("`")
("{")
("|")
("}")
("~")
(" ")
("  ")
("“")
("”")
("’")
("%")

提前致谢!

2 个答案:

答案 0 :(得分:1)

在这种情况下,您要做的是匹配31个不是分隔符的字符:

[^!@"#$&'()*+,./:;<=>?^`{|}~ “”’%]{31,}

Demo

此外,您可能也可能只匹配有效字词,而不是使用分隔符&#34;黑名单&#34; (但这取决于您的确切用例)

\w{31,}

\w[a-zA-Z0-9_]相同)

Demo

答案 1 :(得分:0)

据我所知,如果行包含大于31个字符的字符串(不包含分隔符),则需要验证行。我建议使用这样的前瞻:

^(?=.*[^!@"#$&'))*+,.\/:;<=>?^`{|}~ “”’%\r\n]{31,}).+$

Demo

然后,您可以根据需要进一步处理这些行。