我提出了一个匹配网站的正则表达式,没有领先的http://或https://。现在,我试图在堆栈跟踪上执行此操作,我希望它只捕获实际网站,但正则表达式也捕获格式com.abc.xyz的java类名称。
通常所有这些都在(或)之前,并且我需要帮助编写负向前瞻。或者,如果我们在前面看到一个com或org,我们也可以消除这种情况。
现在,我有这个正则表达式。 (?!at) [a-z\.-]*\.(com|net|org|edu|gov|mil|us|uk|au|in|ca|eu|ke)
我不确定如何添加" at"对于负面的预测。这只是抓住了一个单词。
几个例子,
client.DefaultHttpClient:连接到{}时遇到的I / O异常(org.apache.http.conn.ConnectTimeoutException) - >连接到scn.sap.com timed out ==>给scn.sap.com
但是这个 在java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)返回我不想要的java.net。
第一部分,请你帮我解决一下。
提前致谢。
答案 0 :(得分:2)
由于您知道at
出现在该行的开头,因此请将其排除在外。然后进行非贪婪的搜索,直到你达到匹配模式:
^(?!^at).*? ([a-z\.-]*\.(?:com|net|org|edu|gov|mil|us|uk|au|in|ca|eu|ke))
您可以使用给定的示例文本at regex101.com here来查看此内容。