为了账号安全,请及时绑定邮箱和手机立即绑定

正则表达式 - 第一步

正则表达式 - 第一步

C#
宝慕林4294392 2021-07-07 09:23:00
我第一次想在 C# 中使用正则表达式。我在 SQL Server 中流畅地使用它们,但与我在这里经历的相比,它非常容易......首先,我想解决简单的字符串(取自另一个问题):static void Main(string[] args){    string FullString = "[http: Something] One Two Three[http: AnotherOne] Four[http: BlahBlah] sdksaod,cne 9ofew {}@:P{";    Regex regex = new Regex(".*[[]http:.*[]]");    foreach (Match match in regex.Matches(FullString))    {        Console.WriteLine(match.Value);    }    Console.ReadKey();}我希望我会在[http: Something]..., [http: AnotherOne]...和处收到匹配项[http: BlahBlah]...,但是在当前尝试中,匹配开始于[http: AnotherOne]...和结束于之前[http: BlahBlah],如果我.*在模式末尾添加,则匹配是整个字符串。我很好奇,为什么它只给了我一场比赛而不是三场预期的比赛。我正在浏览正则表达式手册和其他帖子,但无法理解。获得这些匹配项的有效模式是什么?(我不需要详细解释,我想我会弄清楚自己会得到什么)。一切都归结于此(以防我不清楚)我想匹配[http:...],其中三个点可以是任何东西。
查看完整描述

2 回答

?
绝地无双

TA贡献1946条经验 获得超4个赞

你需要

Regex regex = new Regex(@"(\[http:.*?])");

@是一个字符串(也可以使用\\字符串中代替)。

(开始捕获组。

\逃逸以下[否则[将是一个字符类的开始。

?使得*非贪婪。


查看完整回答
反对 回复 2021-07-10
?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

尝试以下模式:@"\[http:[^\]]*\]". 这意味着“匹配以 开头的字符序列[http,然后具有任何长度的任何字符的序列,除了 ],然后以]”结尾。

编辑:* Andrew Morton 建议的非贪婪版本是[^\]].


查看完整回答
反对 回复 2021-07-10
  • 2 回答
  • 0 关注
  • 133 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信