【问题标题】:How to Regex match a "/" in C#如何在 C# 中正则表达式匹配“/”
【发布时间】:2016-01-14 18:04:54
【问题描述】:

我希望在执行此操作后“匹配”布尔为真:

string urlSegment = "whatever('id')/"
string regexPattern = ?;
bool matched = Regex.Match(urlSegment, regexPattern, RegexOptions.IgnoreCase).Success

如何转义正斜杠,以便我可以在“('”后面加上任何 id 后面跟“')/”? (类似于 regexPattern = "('*')/")。

【问题讨论】:

  • 你有什么尝试吗?你确定你需要逃避/and did你试图这样做吗?
  • 您可以使用@"whatever\('id'\)/" 作为regexPattern 来使下一个陈述成立,但它真的是url 的样子吗?
  • 请发布一个不同的问题,而不是从根本上改变你的问题。否则,现有的答案将变得毫无意义。更糟糕的是,回答原始问题的人不会注意到您提出了新问题。获得新问题的机会将受到影响。不是我的反对票,但我很受诱惑
  • 你能提供几个输入和预期输出的例子吗?是否需要结尾斜线?如果输入是 `"whatever('id')/somethingelse('id2')/ 你想要两个 id 吗?我想你可能已经过度简化了你的例子,并且会得到简化或过于具体的答案。

标签: c# regex c#-4.0


【解决方案1】:

编辑后,这是我建议的模式:.+\('(.*)'\)/

这将匹配任何一组字符,后跟括号和包裹任何一组字符的单引号。 RegexPal


原答案:

不用逃跑:DotNetFiddle

string urlSegment = "whatever('id')/";
string regexPattern = "/";
bool matched = Regex.Match(urlSegment, regexPattern, RegexOptions.IgnoreCase).Success;

这也是一个非常简单的匹配。正则表达式有点矫枉过正。您可以使用Contains() 查看字符串是否包含第二个字符串。这显示在小提琴中。

【讨论】:

  • 我认为这不是 OP 真正想要的,但是这又是正确的。顺便说一句,我们不妨只使用 urlSegement.EndsWith("/")。
【解决方案2】:

你可以像这样提取id

string urlSegment = "whatever('id')/";
string regexPattern = @"whatever\('(?<id>.+)'\)/";

Match match = Regex.Match(urlSegment, regexPattern, RegexOptions.IgnoreCase);
bool matched = match.Success;
string id = match.Groups["id"].Value;

【讨论】:

  • @cFrozenDeath 可能是一个糟糕问题的最佳假设。
  • @cFrozenDeath 因为 OP 更改了问题文本。此外,有时会出现一些糟糕的问题模式,经验丰富的开发人员会使用这些模式来猜测某人真正想问的问题。类似于从客户的幻想中预测实际需求
  • 没有投反对票,但我没有看到 OP 在问题的两个版本中都不需要 id
  • 正则表达式无论如何都可以工作,如果您想匹配括号中的值,您可能也对该值感兴趣。甚至还有一个名称,XY 问题 - 想要解决问题 X,尝试 Y,当失败时,询问 Y
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-05
  • 1970-01-01
相关资源
最近更新 更多