删除除与正则表达式java匹配的文本以外的所有文本
我有regexp,它应该删除注释(是的,这很糟糕,但对我来说它是有效的) 此代码应删除所有逗号删除除与正则表达式java匹配的文本以外的所有文本,java,regex,string,Java,Regex,String,我有regexp,它应该删除注释(是的,这很糟糕,但对我来说它是有效的) 此代码应删除所有逗号 Pattern.compile(regex).matcher(some text).replaceAll(" "); 但是我怎样才能删除除regexp之外的所有内容呢 例如: 如果我有这样的字符串: /*评论很酷*/ 公共静态void foo(){} 我的regexp匹配注释,但我需要删除不匹配的内容,因此它看起来像: /*Comments it's cool*/ 基本上,您可以只匹配正则表达式匹
Pattern.compile(regex).matcher(some text).replaceAll(" ");
但是我怎样才能删除除regexp之外的所有内容呢
例如:
如果我有这样的字符串:
/*评论很酷*/
公共静态void foo(){}
我的regexp匹配注释,但我需要删除不匹配的内容,因此它看起来像:
/*Comments it's cool*/
基本上,您可以只匹配正则表达式匹配的内容,并连接匹配的文本。这要容易得多
至于ReXEX,它可以移除所有与原始模式匹配的所有内容,可以考虑通过捕获可选组捕获整个模式,并使用<代码> .<代码>来匹配其后的任何字符。
比如说,你的模式是abc。它与abc相配。但是现在,你需要匹配相反的东西,所有你的正则表达式不匹配的东西。使用(?s)(abc)?.
并替换为$1
。看
不过,对于换行符,可能需要进行一些调整。如果不想删除换行符,请不要使用“点全部”修改器。如果要使用它,请将原始模式中的
替换为[^\n\r]
。请记住,您将能够使用一些(\r?\n |\r){2,}
模式(以及$1
反向引用)收缩空行
那么,你的正则表达式是
String regex = "^\\s*//.*|/\*[^*]*\*+(?:[^/*][^*]*\*+)*/";
其中,/\*[^*]*\*+(?:[^/*][^*]*\*+)*/
匹配多行注释,^\\s*/.
匹配单行注释
要使其删除所有匹配项,请使用
String regex = "(?sm)(^\\s*//[^\r\n]*|/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/)?.";
并替换为
$1
反向参考。请参阅(基于)。注:我还为^
添加了一个(?m)
多行修饰符,以便在行首匹配。基本上,您可以只匹配正则表达式匹配的内容,并连接匹配的文本。这要容易得多
至于ReXEX,它可以移除所有与原始模式匹配的所有内容,可以考虑通过捕获可选组捕获整个模式,并使用<代码> .<代码>来匹配其后的任何字符。
比如说,你的模式是abc。它与abc相配。但是现在,你需要匹配相反的东西,所有你的正则表达式不匹配的东西。使用(?s)(abc)?.
并替换为$1
。看
不过,对于换行符,可能需要进行一些调整。如果不想删除换行符,请不要使用“点全部”修改器。如果要使用它,请将原始模式中的
替换为[^\n\r]
。请记住,您将能够使用一些(\r?\n |\r){2,}
模式(以及$1
反向引用)收缩空行
那么,你的正则表达式是
String regex = "^\\s*//.*|/\*[^*]*\*+(?:[^/*][^*]*\*+)*/";
其中,/\*[^*]*\*+(?:[^/*][^*]*\*+)*/
匹配多行注释,^\\s*/.
匹配单行注释
要使其删除所有匹配项,请使用
String regex = "(?sm)(^\\s*//[^\r\n]*|/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/)?.";
并替换为
$1
反向参考。请参阅(基于)。注:我还为^
添加了一个(?m)
多行修饰符,以便在行首进行匹配。只需连接所有匹配项?哦,来吧-匹配正则表达式并将其附加到结果字符串/缓冲区/等等。顺便问一句,您真的很高兴使用(.|\n)+?
?至少使用*?
(使用(?s)
内联修饰符)。但是,对于多行注释有更好的正则表达式。而(^\/\/.*)|(\s+\/\/.*)
与(\s*\/\/.*)
.B.t.w相同。您可能想签出我的查询/答案:。只需连接所有匹配项?哦,来吧-匹配正则表达式并将它们附加到结果字符串/缓冲区/等等。顺便说一句,您真的很高兴使用(.|\n)+?
?至少使用*?
(使用(?s)
内联修饰符)。但是,对于多行注释有更好的正则表达式。而(^\/\/.*)|(\s+\/\/.*)
与(\s*\/\/.*)
.B.t.w相同。您可能想签出我的查询/答案:。