Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用于确定字符串是否由4个以上的数字组成的正则表达式_Java_Python_Regex_Security - Fatal编程技术网

Java 用于确定字符串是否由4个以上的数字组成的正则表达式

Java 用于确定字符串是否由4个以上的数字组成的正则表达式,java,python,regex,security,Java,Python,Regex,Security,我想从日志中提取URL字符串,如下所示: 三月27日11:22:38 144.0.116.31代理设备=WindowsDNS代理日志文件=DNS.log PluginVersion=X.X.X日期=3/27/2019时间=11:22:34 AM线程ID=11BC上下文=数据包消息=内部数据包标识符=000000 7A4843E100 UDP/TCP指示符=UDP发送/接收指示符=Snd远程IP=X.X.X Xid(十六进制)=9b01查询/响应=R操作码=Q标志(十六进制)=8081标志(字符代

我想从日志中提取URL字符串,如下所示:

三月27日11:22:38 144.0.116.31代理设备=WindowsDNS代理日志文件=DNS.log PluginVersion=X.X.X日期=3/27/2019时间=11:22:34 AM线程ID=11BC上下文=数据包消息=内部数据包标识符=000000 7A4843E100 UDP/TCP指示符=UDP发送/接收指示符=Snd远程IP=X.X.X Xid(十六进制)=9b01查询/响应=R操作码=Q标志(十六进制)=8081标志(字符代码)=DR响应码=无错误问题类型=问题名称=outlook.office365.com

我希望提取的名称文本,其中包含超过5位数字

建议的一种可能的方法是
(\d.*){5,}
,但似乎不起作用,请建议另一种获取字段的方法

字符串匹配的示例:

outlook12.office345.com outlook.office12345.com

尝试以下模式:
(?=\b.*(:\d[^\d\s]*){5,})\s*

说明:

(?=…)
-正向前瞻,确保其内部的模式在前方某处匹配:)

\b
-单词边界

(?:…)
-非捕获组

\d[^\d\s]*
-匹配数字
\d
,然后匹配零个或多个除空格
\s
或数字
\d

{5,}
-匹配前面的模式5次或更多次

\S*
-如果断言为true,则匹配零个或多个除空格以外的字符以匹配字符串,但我认为您只需要断言:)

如果只需要连续数字,请使用简化模式
(?=\b.*\d{5,})\S*


当然,您必须添加正向查找:
(?此正则表达式:

(?<=Name=).*\d{5,}.*?(?=\s|$)
Name=([^ ]*\d{5,}[^ ]*)

(?您可以查找以下表达式:

(?<=Name=).*\d{5,}.*?(?=\s|$)
Name=([^ ]*\d{5,}[^ ]*)
说明:
Name=
查找以“Name=”开头的任何内容,而不是在以下情况下捕获:
[^]*
非空格的任意字符数
\d{5,}
然后一行5位数字
[^]*
然后再次尝试此正则表达式

([a-z0-9]{5,}.[a-z0-9]{5,})+.com

https://regex101.com/r/OzsChv/3
It组

outlook.office365.com
outlook12.office345.com

还有所有url字符串

你能从上面实际包含的示例文本中给出匹配的示例吗?我可能需要新的眼镜,但里面没有
abc12345
…假设一个名称=12sskd345.google.com我想得到12sskd345.google.com所以你想得到(name=outlook.office365.com)值名称属性。对吗?是的,但只有当它有5个以上的数字时,这才有效。但这会变得非常昂贵。我能做些更好的事情,只找到这些数字连续出现的字符串吗?正则表达式将在空格后继续捕获:这似乎不适合@Vatsalyadav的应用程序n、 嘿,它似乎对look back@Michał不起作用Turczyn@VatsalyaYadav如果答案解决了你的问题,你应该接受它(左边的绿色复选标记)和可选的upvote。您的正则表达式与链接中的正则表达式不匹配。它也会错误地匹配少于5位的字符串。并且OP中没有显示字符串总是以
.com
([a-z0-9]{5,}.[a-z0-9]{5,})+.com结尾。请尝试此正则表达式。,