【问题标题】:C# Regular Expression To Check for a string in pattern [closed]C#正则表达式检查模式中的字符串[关闭]
【发布时间】:2013-11-01 14:45:25
【问题描述】:

我想检查字符串一个正则表达式,它表示目标字符串是否在目标字符串的大括号内。

例子

string keyword = "word";
string wholeText1 = "test test word test test { something else }";
string wholeText2 = "test test something else { word }";

所以,我想要一个可以得出真假结论的表达式。

我还没有真正得到任何地方,我对正规快递的了解为 0。 感谢任何愿意给我快速帮助的人。

【问题讨论】:

  • 这些“为我写这个正则表达式”的问题是什么?我们不会为您这样做。阅读教程,拿起一本书,尝试一些事情,表明您至少对理解解决方案感兴趣。
  • 给一个人一天吃的鱼,教他钓鱼,然后......

标签: c# regex


【解决方案1】:

如果你不介意不使用正则表达式:

var startindex = wholeText1.IndexOf("{");
var endindex = wholeText1.IndexOf("}", startindex);

return wholeText1.Substring(startindex, endindex).Contains(keyword);

【讨论】:

  • 这将在“{}keyword {}”上失败。是否与“规范”匹配是应得的——它确实检查关键字是否在“{”和“}”之间,但不检查它们当时是否打开。忽略这条评论,我错了。
  • 这不会失败,因为它不在括号内。右括号表示括号的结尾,否则您将永远无法确定“括号之间”。
  • 但是,它会在'{} {keyword}' 上错误地失败,不是吗?
  • 是的,它只会查找括号内的第一个匹配项。如果您想要多个括号,请使用循环。
【解决方案2】:

您不需要正则表达式。就做text.Contains("{ " + keyword + " }");

【讨论】:

    【解决方案3】:
        bool CheckTargetString(String str,String key)
        {
            int firstIndex = str.IndexOf("{");
            int lastIndex = str.IndexOf("}");
            int keyIndex = str.IndexOf(key);
            return (keyIndex > firstIndex && keyIndex < lastIndex);
        }
    

    【讨论】:

    • 如果字符串包含左大括号或右大括号,则返回 true。
    • @David : 请您现在检查一下。
    • 这样好多了:)
    • :) 谢谢大卫,其实我第一次没有遇到问题。谢谢。
    猜你喜欢
    • 2020-03-16
    • 1970-01-01
    • 1970-01-01
    • 2021-09-15
    • 2021-12-30
    • 2012-08-05
    • 2020-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多