【问题标题】:How to use regex to get part of string in c#如何使用正则表达式在c#中获取部分字符串
【发布时间】:2009-01-14 10:06:55
【问题描述】:

我正在尝试使用

(?<key>.{5}keyword.{5}?)

测试“其他字符串关键字其他文本”

它会得到“环关键字其他”

我希望“akeyword other text”或“other string keyworda”或“akeywordc”也匹配。

如何修改正则表达式?


我有一个长字符串,我想获取 find 关键字并使用前缀和后缀字符串获取它

要求 5 只是一个样本,它可以更改为任何数字,例如 50

我的问题是关键字的位置是否小于 5 并且不匹配。

当前缀或后缀字符串长度为时,如何获取带有关键字的前缀或后缀字符串

不知道。


抱歉,我的问题不清楚。

我想用关键字获取前缀或后缀字符串。我想得到最多 5 个字的前缀或后缀字符串。

示例:

“abcde 关键字 abcde”我想得到“bcde 关键字 abcd”

当前缀字符串少于 5 个单词时

“关键字 abcde”我想得到“关键字 abcd”

或少于 5 个单词的后缀字符串

“abcd 关键字 a”我想得到“abcd 关键字 a”

【问题讨论】:

  • 你能详细说明你的例子吗?你到底有什么输入字符串,应该匹配什么?

标签: c# regex


【解决方案1】:

这就是你要找的东西吗:

(?<key>.{0,5}keyword[\s\S]{0,5})

【讨论】:

    【解决方案2】:

    不清楚你想要通过什么失败;特别是,.{5}keyword 之前需要 5 个字符,所以我不确定“akeywordc”应该如何匹配。 [\s\S]{5} 表示“5 个空白或非空白”...同样,这需要 5 个字符(可能是 .{5})。

    那么:你希望它如何表现?

    例如,(?&lt;key&gt;.{1,5}keyword.{1,5}) 将匹配前后 1-thru-5 个字符(贪婪地)。

    【讨论】:

      【解决方案3】:

      这个?

      (?<key>.{0,5}keyword.{0,5})
      

      您可以在学习如何解决此问题的同时使用The Regulator 之类的东西来破解;教人钓鱼等等。

      【讨论】:

        【解决方案4】:

        这可以像 (.*?)keyword(.*?) 一样简单,也可以是 (.{0,5}),根据 Sebastiens 的回答,它仍然取决于您所说的“未知”是什么意思。

        您的意思是可以接受任意数量的匹配项,还是只接受特定数量的匹配项,但您直到运行时才知道该数量 - 在这种情况下,您如何在运行时知道该数量(我们无法回答给你)。

        最好还是发布一组匹配的示例字符串和不匹配的示例字符串。


        从 OP 更新 2 编辑:那么看来您需要结合 mark 和 sebastians 的答案

        (?<key>.{0,5}keyword.{0,5})
        

        这将包括 0 到 5 个字符的前缀和 0 到 5 个字符的后缀匹配

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-01-20
          • 2021-12-30
          • 1970-01-01
          • 2021-12-10
          • 2021-09-27
          • 2017-11-19
          • 2021-11-26
          • 1970-01-01
          相关资源
          最近更新 更多