【问题标题】:Retrieving (Validating) a portion of a string检索(验证)字符串的一部分
【发布时间】:2012-08-30 04:18:35
【问题描述】:

给定一个字符串,我需要验证该字符串是否严格包含 $LOOP 这个词。例如,

$LOOP(0,"0000","00000009","00000010",5000,100,0,0,0,0,10,0,0);

将返回为真,而

$LOOP_A("asdf","zxcv")
$LOOP_INIT(0);

将返回 false。

我遇到的问题 string.Contains($LOOP) 是它也为以下两个字符串返回 true。

我该如何解决这个问题?

编辑 1:

这里有一些其他的例子:

$LOOPING should return false
$LOOP$LOOP should return false
$LOOP(anything here) should return true
$LOOP        (Anything here) should return true
$asdLOOP should return false

【问题讨论】:

    标签: c# .net wpf regex string


    【解决方案1】:

    也许你可以只使用\$LOOP\(.*\);这个模式?

    \$LOOP[^_\w] 将匹配 $LOOP not 后跟 _ 或单词字符。

    或者,您可以在$LOOP 处拆分模式,并查看是否有任何生成的片段以不属于您的单词的字符开头(例如,( 但不是_

    【讨论】:

      【解决方案2】:

      您正在寻找的可能是带有 Word 边界的 REGEX。这样就可以了

      Regex re = new Regex(@"\$LOOP\b");
      

      【讨论】:

        【解决方案3】:

        假设这是 C# 和 .NET,您可以将 RegEx 用于您的目的:

        bool Res = System.Text.RegularExpressions.Regex.IsMatch(YourString, @"^.*\$LOOP\b.*$");
        

        但是,我想说您的问题有点模棱两可。您希望在字符串“$LOOP”之后允许哪些字符?例如,它应该匹配“$LOOPING”、“$LOOP$LOOP”还是“$LOOP (something)”?一旦你决定了,上面的表达式就可以改进了。

        【讨论】:

          猜你喜欢
          • 2011-09-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-01-15
          • 2016-06-21
          • 1970-01-01
          • 2012-07-16
          • 1970-01-01
          相关资源
          最近更新 更多