正则表达式:允许除数字长度以外的所有数据

时间:2014-05-27 15:10:52

标签: regex logstash

我需要解析这样的字符串:

ferf;:!:wo%ioz$\/r+fio)=13 ('".&3zf 691081886

并获取所有字符,但不包括数字位数为5或更高的末尾的数字。

除了691081886之外我想要所有(包括空格),长度数最小为5,前面文本的长度不超过4。

我尝试这样的事情:

(.+)[^0-9]{5,}  

更多说明:

我有一个包含特殊字符的字符串,其数字长度至少为5 我想得到字符串而不是数字 在输入中我有这个

my string with special characters and number

我希望输出:

 my string with special characters

使用真实代码 输入:

Mozilla/5.0 (Windows NT 6.1; rv:29.0) Gecko/20100101 Firefox/29.0  691081886

输出:

Mozilla/5.0 (Windows NT 6.1; rv:29.0) Gecko/20100101 Firefox/29.0

谢谢

2 个答案:

答案 0 :(得分:0)

如果字符串末尾始终有数字,则可以使用

.*(?=\b\d{5,}$)

<强>解释

.*      # Match as many characters as possible
(?=     # until the following regex can be matched:
 \b     # Start of a number (or other alphanumeric "word")
 \d{5,} # At least five digits
 $      # until the end of the string
)       # End of lookahead

答案 1 :(得分:0)

^(.+?)\s*\d{5,}$

请参阅regex101

我相信这就是你所追求的。如果您可以保证至少有一个空格作为所需字符串与您要丢弃的最终号码之间的分隔符,则可以将*更改为\ +