2012-08-30 80 views
1

的一部分,我需要验证字符串包含单词$ LOOP严格。例如,检索(验证)给定一个字符串的字符串

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

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

将返回假将返回为真。

我与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 

回答

2

你在找什么与Word边界也许正则表达式。这将这样的伎俩

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

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

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

或者,也可以在$LOOP分裂图案和查看是否有任何所得到的片段的同一个字符不是你的话一部分(例如,(但不_

0

假设这是C#开始和.NET,您可以使用正则表达式:

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

但是,我想说你的问题有点含糊不清。在字符串“$ LOOP”之后,你想要允许哪些字符?例如,它应该匹配“$ LOOPING”还是“$ LOOP $ LOOP”或“$ LOOP(something)”?一旦你决定,上述表达式可以改进。

+0

更新问题 – l46kok