我有一些这种类型的文件:
/* 78 */ Lorem ipsum dolor sit amet
/* 79 */ Lorem ipsum dolor sit amet
/* eb */ Lorem ipsum dolor sit amet
/* HG */ Lorem ipsum dolor sit amet
/* */ Lorem ipsum dolor sit amet
/* 83 */ Lorem ipsum dolor sit amet
/* 84 */ Lorem ipsum dolor sit amet
/* */
/* */ Lorem ipsum dolor sit amet
/* ZX */ Lorem ipsum dolor sit amet
/* */ Lorem ipsum dolor sit amet
/* */ Lorem ipsum dolor sit amet
/* 90 */ Lorem ipsum dolor sit amet
/* 91 */ Lorem ipsum dolor sit amet
/* 92 */ Lorem ipsum dolor sit amet
我想消除
/* */
/* 10 */
带有正则表达式的部分文本,我的正则表达式如下:
[/*(0-9)*/]
但它无法正常工作,它删除了一些包含数字的文本
答案 0 :(得分:4)
[
和]
内的所有内容都称为character class,它始终只匹配一个字符。
在角色类中,正常的正则表达式元字符,如*
,(
和)
,会失去它们的特殊权力。因此[*]
只匹配文字'*'
。
在您的情况下,[/*(0-9)*/]
将匹配以下字符之一:'/'
,'*'
,'('
,')'
,'/'
或任何(ASCII)数字。
您正在寻找的是正则表达式:
(?m)^/\*[\s0-9]*\*/
匹配"/*"
后跟零个或多个空格字符(\s
)或数字(0-9
),以"*/"
结尾。 ^
匹配输入的开头,并在其前面添加(?m)
使其与行的开头匹配。
所以它匹配你的例子中的所有多行注释,除了这些:
/* eb */
/* HG */
/* ZX */
答案 1 :(得分:1)
试试这个表达
/^\/\*[0-9\s]*\*\//
如果您还要删除/* AH */
/^\/\*[\w\s]*\*\//
答案 2 :(得分:1)
尝试使用此选项,它与开启和关闭/ *和* /匹配,其中包含一些文本。
/^\/\*.*?\*\//
答案 3 :(得分:1)
尝试使用以下regexp:
/\/\*.*?\*\//
答案 4 :(得分:1)
试试这个正则表达式
\/\*.*?\*\/\s+
\/\*
匹配起始/
和*
.*?
匹配任意数量的文字,而不是贪婪
\*\/
与结尾*
和/
\s+
匹配任意数量的空格字符(可选)
答案 5 :(得分:1)
如果您使用的是Linux(或可以访问它),则可以不使用正则表达式:
cut -b 10- <INPUTFILE>
或者如果条纹是固定宽度并且在线的开始处,例如, sed
:
sed '/^.\{10\}//' <INPUTFILE>
或使用awk
(如果一行只有两个/
:
awk '{ print gensub(".*/","",1,$0) }'
HTH