echo '<pre>'; print_r(1); echo '</pre>'; <- select this
echo '<pre>'; print_r($temp); echo '</pre>'; <- select this without space
// echo '<pre>'; print_r($temp); echo '</pre>'; <- skip this
echo '<pre>'; print_r($temp3); echo '</pre>'; <- select this
print_r($temp1); <- select this
// print_r($temp11); <- skip this
print_r($temp2); <- select this without spaces
if (true) {
print_r($temp4); <- select this without spaces
}
我有一个带有print语句的代码我只需要选择非注释语句
这是一个正则表达式
^((?!\/\/\s?))(echo '<pre>';\s?)?(.+)?(print_r)(\.?)(\w+)?\((.+)?\);( echo '<\/pre>';)?
如何跳过空格?' print_r($temp4);'
或者如何更改正则表达式以使其正常工作?
答案 0 :(得分:1)
import re
rgx = re.compile('^[ \t]*((echo|print_r).*;)', re.MULTILINE)
for line in rgx.finditer(code):
print line.group(1)
# echo '<pre>'; print_r(1); echo '</pre>';
# echo '<pre>'; print_r($temp); echo '</pre>';
# echo '<pre>'; print_r($temp3); echo '</pre>';
# print_r($temp1);
# print_r($temp2);
# print_r($temp4);
答案 1 :(得分:0)
也许是这样:
^(?!\/\/) *(echo '<pre>';\s?)?(.+)?(print_r)(\.?)(\w+)?\((.+)?\);( echo '<\/pre>';)?
答案 2 :(得分:0)
这个正则表达式不会捕获该行,如果有(//, @*, /*, <!--)
注释,否则它将捕获没有空格的所有内容,希望这将解决您的问题。
([\n]|^)(?P<group>(?! *\/\/| *@\*| *\/\*| *<!--| *\\\*)([^\n]*?)(\S)(((?! *\/\/| *@\*| *\/\*| *<!--| *\\\*).)*))
答案 3 :(得分:0)
以下是我对你想要的解释: Regex101
"^(?!\s*?//)\s*?(print_r\(.*\);?|echo\s*?'<pre>.*;).*$"gm
您可以获得有关它在网络应用程序一侧的功能的完整说明