【问题标题】:RegEx for split text on string .NETRegEx 用于在字符串 .NET 上拆分文本
【发布时间】:2013-04-07 23:12:43
【问题描述】:

我为我的问题找到了this 的答案,但它是针对 PHP 的。也许.NET 有类似的东西?我知道Split 方法,但我不明白如何在我的标签<@any_text@> 之外保存文本,我需要一个正则表达式(根据任务的条件)。

例如:

string: aaa<@bbb@>aaa<@bb@>c

list: aaa
      <@bbb@>
      aaa
      <@bb@>
      c

【问题讨论】:

  • 你能告诉我们你的尝试吗?

标签: c# .net regex


【解决方案1】:

这里你已经通过了测试。在网上找到它并不难,而且对您来说肯定会更快更好 - 尝试首先自己寻找解决方案,尝试一些代码,然后提出问题。这样你就会真正学到一些东西。

[TestMethod]
public void TestMethod1()
{
    string source = "aaa<@bbb@>aaa<@bb@>c";
    Regex r = new Regex("(<@.+?@>)");

    string[] result = r.Split(source);
    Assert.AreEqual(5, result.Length);
}

【讨论】:

  • 非常感谢。我总是试图找到解决方案,但正则表达式对我来说太复杂了
  • 酷。正则表达式不应该被过度使用,但有时它们会非常方便。值得学习一两件事。如果此答案或任何其他答案对您有所帮助 - 请投票并将其标记为答案。我们都喜欢声誉;)
  • 我想投票,但我的声望低于 15。抱歉。
【解决方案2】:
string input = @"aaa<@bbb@>aaa<@bb@>c";
var list = Regex.Matches(input, @"\<.+?\>|[^\<].+?[^\>]|.+?")
                .Cast<Match>()
                .Select(m => m.Value)
                .ToList();

【讨论】:

  • 即使您的解决方案是正确的 - 我更喜欢我的 - 更简单并且按照设计的方式完成。但是我喜欢你的正则表达式。我永远也学不会快速阅读它们;)
  • @Pako 一天后我也无法阅读自己的正则表达式。因此我主要尽量避免使用正则表达式:) 对于这个问题,我会简单地使用 input.Split(new char[] { '&lt;', '&gt;' }); 然后添加 &lt;&gt;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-07
  • 2016-02-19
  • 2022-01-03
  • 2015-05-08
  • 2011-03-29
  • 2013-01-23
  • 2018-04-06
相关资源
最近更新 更多