Regex 不以“quot”开头的字符串的正则表达式/*&引用;
什么正则表达式匹配所有字符串,除了以literalRegex 不以“quot”开头的字符串的正则表达式/*&引用;,regex,Regex,什么正则表达式匹配所有字符串,除了以literal/*开头的字符串,表示斜杠(U+002F)后跟星号(U+002A) 我尝试过^.*.[^/\*],但它似乎对我不起作用。您可以使用负面前瞻: ^(?!/\*).* 这将匹配所有内容,除非它以/*开头 或者如果您的意思是除/或*以外的任何内容: ^[^/*].* 编辑:这用于匹配以字符开头的字符串,而不是由于误读问题而产生的/和*。忽略这一点 ^[^/*].* ^字符串的开头 [^/*]除/和* *更多字符(开头的*匹配任何内容。您只需将非块
/*
开头的字符串,表示斜杠(U+002F
)后跟星号(U+002A
)
我尝试过
^.*.[^/\*]
,但它似乎对我不起作用。您可以使用负面前瞻:
^(?!/\*).*
这将匹配所有内容,除非它以/*
开头
或者如果您的意思是除/
或*
以外的任何内容:
^[^/*].*
编辑:这用于匹配以字符开头的字符串,而不是由于误读问题而产生的
/
和*
。忽略这一点
^[^/*].*
^
字符串的开头[^/*]
除/
和*
*
更多字符(开头的*
匹配任何内容。您只需将非块移到开头:
^[^/*].*
^[^/*]
应该是您所需要的全部:
$ echo -e "*red\n/green\nblue"
*red
/green
blue
$ echo -e "*red\n/green\nblue" | egrep "^[^/*]"
blue
如果您确实需要匹配至少两个字符的行,您可以使用^[^/*].+
谢谢您的接受,您介意告诉我如何使用//(单行注释)或这一点吗?这意味着不以/*或/@smallB开头,您可以简单地或向前看:^(?!/\*./.
^(?!/\*./[/*])。
^(?)
是您所需要的一切。如果我是您,我会使用“/x模式”使其易读。因此,请使用(?x)作为前缀
或使用正确的模式编译标志。这是Java中的模式。注释
,或许多语言中的/x
。@tchrist它取决于你想用正则表达式做什么。如果你想捕获或替换它,你需要一些东西。如果你只是想测试你是对的。不幸的是,OP没有告诉你到底是哪个用例。我希望您不要试图从某些内容中过滤掉注释,因为这些注释可能从任何地方开始并跨越多行。这是不正确的;*被允许作为第一个字符,而不是作为/@triplee同意后的第二个字符。我将问题误读为以字符以外的任何字符开头的字符串d*
-多亏了编辑,问题现在清楚了。