【问题标题】:c# regex transforms similar to pythonc# 正则表达式转换类似于python
【发布时间】:2016-05-18 08:29:44
【问题描述】:

如何在 # 中使用类似于此 python 代码的正则表达式转换 # 中的 url

import re
url = http://active.com
url1 = re.sub(r'(^htt[^\/]*\/\/)(.*)',r'\1www\.$2',url)

输入:

http://active.com

预期输出:

http://www.active.com

我怎么能通过 www。来自c#中的一个变量

例如

string domain_part = "www."

那么我必须在转换中使用上述变量吗?

【问题讨论】:

  • 你试过了吗?

标签: c# python regex transform substitution


【解决方案1】:

在 C# 中,Regex.Replace 等效于 Python 的 re.sub。请注意反向引用样式不同:Python 替换字符串中的 \1 在 C# 中是 $1(而 \g<1>${1})。

C# 中的原始字符串文字具有 @"" 表示法(相当于 Python 中的 r'')。

你可以使用

//var url = "http://www.active.com"; // http://www.active.com
var url = "http://active.com"; // http://www.active.com
var domain_part = "www.";
var regex = new Regex(string.Format(@"(^htt[^/]*//)(?!{0})(.*)", Regex.Escape(domain_part)));
var res = regex.Replace(url, "$1" + domain_part + "$2");
Console.WriteLine(res);

IDEONE demo

解释:

  • Regex.Escape(domain_part) 转义文字字符串以在正则表达式中使用
  • (^htt[^/]*//)(?!{0})(.*) 包含一个否定的前瞻,如果字符串中已经存在 domain_part,则匹配失败
  • "$1" + domain_part + "$2" 插入动态域部分。

【讨论】:

    猜你喜欢
    • 2011-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-16
    • 2014-11-08
    • 1970-01-01
    • 2011-10-02
    • 1970-01-01
    相关资源
    最近更新 更多