RegEx to remove /** */ and // ** **// php comments

2020-02-14 04:36发布

ReGex newbie here.

I need to remove two different style comments from PHP files using RegEx.

I've found this expression to run in the BBEdit text editor:

\/\*[\s\S]*?\*\/

and it removes comments in the first style, like below:

/** This comment gets removed with my regex */

But it doesn't remove these style comments:

// ** This comment has the double leadng-trailng slashes ** //

I don't know why there is a mix of the two different types of comments, and there are only a few of the // comments, but I need to delete them all.

Adding another slash to the search, i.e.

\/\\*[\s\S]*?\*\/

makes the expression greedy and it removes single slashes in non-commented code. A working expression will require obviously more complexity than that :)

3条回答
We Are One
2楼-- · 2020-02-14 05:06

You can use this regex:

\/\*.*?\*\/|\/\/.*?\n

Working demo

enter image description here

As Hwnd pointed in this answer, if you change the delimiter to ~ you can use the cleaned regex:

/\*.*?\*/|//.*?\n
查看更多
三岁会撩人
3楼-- · 2020-02-14 05:07
~//?\s*\*[\s\S]*?\*\s*//?~

This works.Just added another \ and space eaters to your answer.

See demo.

http://regex101.com/r/lK9zP6/6

查看更多
孤傲高冷的网名
4楼-- · 2020-02-14 05:19

PHP has got a built-in function for that:

php_strip_whitespace($filename);
查看更多
登录 后发表回答