带有 // 符号的正则表达式
RegEx with the symbol of //
这是问题所在:
int x;
int y;
//cin >>x;
cin >>y;
PHP代码:
<?php
if (preg_match_all("/\x2F\s?cin\s?>>/", $line, $match)){
if (preg_match_all("/\bcin\s?>>\s?\b/i", $line, $match)){
print " Correct";
}
else
print "cin,not found";
}
else
print "//cin,not found";
?>
如何让它工作例如:
它将直接跳转到 cin>> y
而不是使用 RegEx //cin>>x
。
这个的主要思想是,我在做一个基于web的c++编译程序,每当学生输入cin时,它就会跳出一个提示框让用户输入他们的值,但是如果学生用//cin输入代码,我的程序仍然会跳出提示框,我希望它使用RegEx来检测,如果检测到//那么它不会运行代码的特定行。
查看 demo here
我可能没有想到所有的情况
正则表达式是 ^(?<!\/\/) *cin
详情:
^
是行首
(?<!\/\/)
是负面回顾
*
是 0 或更多 spaces
cin
简直就是 cin
负向后视确保无法匹配 cin
之前的 //
(之前有或没有 space)
它不匹配 //cin >>x
因为你的表达式是 /\x2F\s?cin\s?>>/
。它以一个以十六进制编码的 /
开头(为什么?)后跟一个或零个空格等等。
为什么每个人都使用正斜杠 (/
) 作为正则表达式分隔符,将正则表达式括在引号中 ("
) 然后使用大量反斜杠进行转义? PHP 使用正则表达式的函数非常灵活,它们 accept a lot of characters 作为正则表达式分隔符。
正则表达式可以这样写:'#//\s?cin\s?>>#'
。它现在更具可读性。
您可以在 PHP:
中使用此正则表达式
if (preg_match_all('~/{2}\s*cin\s*>>(*SKIP)(*F)|\s*\bcin\s*>>~', $line))
print "uncommented cin found";
else
print "uncommented cin not found";
RegEx Demo
~
正在使用备用正则表达式定界符
/{2}\s*cin\s*>>
正在查找 cin
前面有评论的实例
(*SKIP)(*F)
正在跳过 cin
的评论匹配项
|
是正则表达式交替
\s*\bcin\s*>>
正在查找所有 未注释 cin
的实例
这是问题所在:
int x;
int y;
//cin >>x;
cin >>y;
PHP代码:
<?php
if (preg_match_all("/\x2F\s?cin\s?>>/", $line, $match)){
if (preg_match_all("/\bcin\s?>>\s?\b/i", $line, $match)){
print " Correct";
}
else
print "cin,not found";
}
else
print "//cin,not found";
?>
如何让它工作例如:
它将直接跳转到 cin>> y
而不是使用 RegEx //cin>>x
。
这个的主要思想是,我在做一个基于web的c++编译程序,每当学生输入cin时,它就会跳出一个提示框让用户输入他们的值,但是如果学生用//cin输入代码,我的程序仍然会跳出提示框,我希望它使用RegEx来检测,如果检测到//那么它不会运行代码的特定行。
查看 demo here
我可能没有想到所有的情况
正则表达式是 ^(?<!\/\/) *cin
详情:
^
是行首(?<!\/\/)
是负面回顾*
是 0 或更多 spacescin
简直就是 cin
负向后视确保无法匹配 cin
之前的 //
(之前有或没有 space)
它不匹配 //cin >>x
因为你的表达式是 /\x2F\s?cin\s?>>/
。它以一个以十六进制编码的 /
开头(为什么?)后跟一个或零个空格等等。
为什么每个人都使用正斜杠 (/
) 作为正则表达式分隔符,将正则表达式括在引号中 ("
) 然后使用大量反斜杠进行转义? PHP 使用正则表达式的函数非常灵活,它们 accept a lot of characters 作为正则表达式分隔符。
正则表达式可以这样写:'#//\s?cin\s?>>#'
。它现在更具可读性。
您可以在 PHP:
中使用此正则表达式if (preg_match_all('~/{2}\s*cin\s*>>(*SKIP)(*F)|\s*\bcin\s*>>~', $line))
print "uncommented cin found";
else
print "uncommented cin not found";
RegEx Demo
~
正在使用备用正则表达式定界符/{2}\s*cin\s*>>
正在查找cin
前面有评论的实例(*SKIP)(*F)
正在跳过cin
的评论匹配项
|
是正则表达式交替\s*\bcin\s*>>
正在查找所有 未注释cin
的实例