【问题标题】:How to get words starting and ending with ^如何获取以 ^ 开头和结尾的单词
【发布时间】:2019-12-02 10:38:42
【问题描述】:

我有这个字符串:

“lorem ipsum 这是^一些要使用的文本^例如”

我怎样才能只获得以 ^ 开头和结尾的单词?

所以结果应该是:“一些要使用的文本”

使用 c# 正则表达式或任何其他方式。

【问题讨论】:

  • 你尝试了什么?什么没有奏效。您必须至少在询问之前表明您尝试过某事
  • 您自己尝试过什么吗?我们可以简单地给你答案,你很可能会得到答案,但最好是你表现出你付出的任何努力,让成员通过纠正你所犯的任何错误来引导你找到正确的答案。
  • 您可以使用拆分并取第二个索引不需要正则表达式

标签: c# asp.net .net regex


【解决方案1】:
Regex.Match(s, @"\^.+\^").Value

会给你:^一些使用的文字^

Regex.Match(s, @"\^(.+)\^").Groups[1]

会给你:一些使用的文字

【讨论】:

    【解决方案2】:

    试试这个:

    \^\K\b[^\^]+
    

    Here is Demo

    Regex.Match(myString, @"\^\K\b[^\^]+").Value;
    

    = "一些要使用的文字"

    如果你有一场比赛 - 你不需要组。如果你不止一个 - 你必须使用组。

    【讨论】:

      【解决方案3】:

      这种方式比正则表达式更好。 String 类为您提供了获得所需内容的方法。 另外,没有必要用模式污染代码

      试试这个:

          string text= "lorem ipsum this is ^some text to use^ for example";
      
          var selectedtext = (text.Split('^')[1]);
      

      【讨论】:

      • 这取决于“更好”的定义,并且可能需要一些基准测试作为证据。但是,是的,这很可能是最简单的解决方案。
      • 它有它的缺点,尽管他应该检查数组的长度并处理许多情况以避免异常
      • 对我来说完全不需要导入正则表达式命名空间。
      • 问题中没有提到它,但它可能是相关的。如果需要捕获多个模式匹配,则会失败,因为它只会获取第一个。它也可能错误地得到文本的后半部分,由于某种原因,只有一个“^”存在。而正则表达式会忽略,除非完全匹配。
      • 字符 '^' 可能会随着时间而改变,他可以处理边缘情况以制作可重用的代码段
      【解决方案4】:

      试试这个

      (?<=\^\s*).+(?=\s*\^)
      

      这会给你类似的结果,不包括 ^ 符号

      some text to use
      

      如果对您有帮助,请不要忘记投票。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-05-31
        • 1970-01-01
        • 1970-01-01
        • 2013-06-27
        • 2021-02-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多