C# 正则表达式在几个垃圾数据之后如何匹配IP和端口
我试图从html文本中提取IP和端口 数据如下所示C# 正则表达式在几个垃圾数据之后如何匹配IP和端口,c#,regex,C#,Regex,我试图从html文本中提取IP和端口 数据如下所示 177.93.79.34\n\n\n\t4145 我的正则表达式模式如下所示 MatchCollection Match=Regex.Matches(源代码,@“\b(?[0-9]{1,3}\){3}[0-9]{1,3}\b\s\s.*选择端口号为([0-9]+)的代理 我也试过这个 \b(?[0-9]{1,3}\.{3}[0-9]{1,3}\b[\s\s].*选择端口号为([0-9]+)的代理。 但是我得到了0个结果。。如果我取下\b\s\
177.93.79.34\n\n\n\t4145
我的正则表达式模式如下所示
MatchCollection Match=Regex.Matches(源代码,@“\b(?[0-9]{1,3}\){3}[0-9]{1,3}\b\s\s.*选择端口号为([0-9]+)的代理代码>
我也试过这个
\b(?[0-9]{1,3}\.{3}[0-9]{1,3}\b[\s\s].*选择端口号为([0-9]+)的代理。
但是我得到了0个结果。。如果我取下\b\s\s.*选择端口号为([0-9]+)
的代理,它会发现所有IP地址都很好。。但是如果没有端口数据,信息是无用的。我如何在1正则表达式中匹配两者。如果HTML格式是确定的,也许这个正则表达式可以帮助(在JavaScript中)
const regex=/((?:[0-9]{1,3}\){3}[0-9]{1,3})。+选择具有端口号的代理。+([0-9]{4})/gm
,结果分两组捕获。SSpoke
如果你想尽量把事情尽量保持在原来的正则表达式上,只需在<>代码> [\s\s] **/COD>用<代码> [s\s] *<代码>中间进行处理。()
但是,一般来说,最好将您感兴趣的不同部分放入捕获组,如:
(\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b)([\s\S]*?Select proxies with port number)\s([0-9]+)
()
主要问题(在我看来)涉及表达式的这一部分:[\s\s].
该部分应该处理IP和端口号之间的所有垃圾,但它真正说的是,找到一个字符,该字符要么是\s
,要么不是\s
(任何字符),后跟任何字符,除了新行字符0到无限次(*
)。虽然粘贴到原始问题中的文本只有一行,但C#代码(HTML)中的“源代码”不是。要解决此问题,只需将表达式更改为[\s\s]*
,它将匹配任何字符,包括新行字符,0到无限次。谢谢,但是它在C中不起作用,结果是:我不认为我可以在C中使用/gm
,删除/code>和/gm
并添加RegexOptions。单线有点起作用,但只匹配网站上10个匹配项中的1个@我明白了,这似乎是一个C#特有的问题<代码>字符串模式=@“((?:[0-9]{1,3}\){3}[0-9]{1,3})。+选择端口号为+?([0-9]{4})的代理
至少可以帮助您找到字符串中的第一个匹配项(因为它不是贪婪匹配)。如果你想匹配所有的输出,也许你可以尝试使用一个循环?不,单线方法是无用的。。它只匹配第一次出现,然后停止,我不知道如何循环它我必须修剪源数据以删除所有旧数据或其他东西。我想我会把它作为我的最后手段。试过了,0场比赛。。是的,很奇怪heh@SSpoke,你能分享你的密码吗?当然可以@SSpoke,哈哈!帮助是它自己的回报。谢谢你@谢谢你,伙计。像你这样的评论使这一切都值得。祝你的项目顺利完成!