正则表达式:文本中的 URI 部分

发布于 2024-10-16 23:48:26 字数 558 浏览 3 评论 0原文

全部!我有这样的文本“一些带有 uri http://test.com 和其他单词的文本。”。我需要使用 one 正则表达式获取 uri 的一部分。

我尝试这样做:

string text = "Some text with uri http://test.com and other words.";
string pattern = @"\b(\S+)://([^:]+)(?::(\S+))?\b"; 
MatchCollection matches = Regex.Matches(text, pattern); 

当我写“一些带有 uri http://test.com” 或“word1 的文本”时,它有效http://test.com:5000 word2”。

哪里有错误?

all! I have a text like this "Some text with uri http://test.com and other words.". And I need to get parts of uri using one regular expression.

I try this:

string text = "Some text with uri http://test.com and other words.";
string pattern = @"\b(\S+)://([^:]+)(?::(\S+))?\b"; 
MatchCollection matches = Regex.Matches(text, pattern); 

And it works, when i write "Some text with uri http://test.com" or "word1 http://test.com:5000 word2".

Where is mistake?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

空城旧梦 2024-10-23 23:48:26

您的第二个 + 修饰符是贪婪的,因此它会匹配 http:// 之后的所有内容,除非它命中 : 或行尾。试试这个:

@"\b(\w+)://([^:]+?)(?::(\S+))?\b"

Your second + modifier is greedy, so it's matching everything after the http:// unless it hits a : or the end of the line. Try this:

@"\b(\w+)://([^:]+?)(?::(\S+))?\b"
美人骨 2024-10-23 23:48:26

这应该会让你更接近......我仍然不确定你想要得到什么......

如果你能显示你想要的结果,它会有所帮助......

\b(\S+)://([^: ]+)

This should get you closer... I"m still not exactly sure what you want to get...

If you could show the results you want it would help...

\b(\S+)://([^: ]+)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文