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
4

3 回答 3

3

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

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

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

于 2012-08-30T04:28:25.930 回答
2

您正在寻找的可能是带有 Word 边界的 REGEX。这会成功的

Regex re = new Regex(@"\$LOOP\b");
于 2012-08-30T04:46:23.710 回答
0

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

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

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

于 2012-08-30T04:38:19.393 回答