关于java里的正则表达式--* 要检测一个java文件有多少行是注释行,我分了两种情况一种是直接以"//"开头的,则可以用 matches("//.*")另一种是以"/*"开头,以"*/"结尾的, 那matches()要怎么设置呢matches("/*.*") 和 matches("*.*/") 这样对么,后面的编译器提升有问题Java正则表达式注释 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 正则处理这个问题比较有难度,例如String str = "/*comment // continue*/"; /* go to */ // What's this这样的情况用正则怎么处理? 因为本身/是转义字符,所以需要////才可以。。第二个如果提取的话,可以用Pattern p=Pattern.compile("(?s)/*(.*?)/*");总行数num如果只是统计行数的话,检测到/*设置的计数值i开始计数,遇到*/计数结束,然后总行数num+=i,i归0;继续运行。。当然。这中间如果出现一行多个/*的情况无法处理,但是这属于异常情况。可以不用考虑 匹配条件compile("(?s)/*(.*?)/*")//忽略换行(?s)//匹配/*开头的,//(.*?)通配//匹配*/结尾的。 嗯。我式子填错了String str="hte/*feggewg*/ht"; Pattern p=Pattern.compile("(?s)//*(.*?)/*/"); Matcher m=p.matcher(str); while(m.find()){ System.out.println(m.group(0)); }结果:/*feggewg*/*是通配字符,需要转义 写了个,测试基本能过,不过最好是作为参考,然后再复杂的情况下测试一下import java.util.regex.Matcher;import java.util.regex.Pattern;public class Hello { public static void main(String[] args) { String str = "\"String\\\" text;\" biao /* // \"goto\" */ \"//hello /*comment*/\"// What's this."; String doubleQuote = "(\".+?[^\\\\]\")"; // 需要再处理"string\""的情况 String lineComment = "(//.+$)"; String blockComment = "(/\\*.+?\\*/)"; Pattern pattern = Pattern.compile(doubleQuote + "|" + lineComment + "|" + blockComment); Matcher matcher = pattern.matcher(str); while (matcher.find()) { String matchedString = matcher.group(0); if (!matchedString.startsWith("\"")) { System.out.println(matchedString); } } }} 输出/* // "goto" */// What's this. myeclipse文件编码问题 编译产生的class文件 初学者问题...2个按钮的问题.. 大家都来看一下,一个貌似简单的问题!自己做字典! 大家看下这道题的运行结果是什么? 在标签中显示图片 初学者请教!!! 有人做过在内部网上的邮件系统吗?服务器是exchange server? jdbc问题 怎样在JB7里面设置MySQL的JDBC驱动? 使用JBUILDER+JAVA WSDP是否就可以写WEB SERVICE了. double的小数问题 【ticmy】问个java代理服务器的问题,谢谢
String str = "/*comment // continue*/"; /* go to */ // What's this
这样的情况用正则怎么处理?
第二个如果提取的话,
可以用Pattern p=Pattern.compile("(?s)/*(.*?)/*");
总行数num
如果只是统计行数的话,检测到/*设置的计数值i开始计数,遇到*/计数结束,然后总行数num+=i,i归0;
继续运行。。
当然。这中间如果出现一行多个/*的情况无法处理,但是这属于异常情况。可以不用考虑
//忽略换行(?s)
//匹配/*开头的,
//(.*?)通配
//匹配*/结尾的。
Pattern p=Pattern.compile("(?s)//*(.*?)/*/");
Matcher m=p.matcher(str);
while(m.find()){
System.out.println(m.group(0));
}
结果:/*feggewg*/
*是通配字符,需要转义
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class Hello {
public static void main(String[] args) {
String str = "\"String\\\" text;\" biao /* // \"goto\" */ \"//hello /*comment*/\"// What's this."; String doubleQuote = "(\".+?[^\\\\]\")"; // 需要再处理"string\""的情况
String lineComment = "(//.+$)";
String blockComment = "(/\\*.+?\\*/)";
Pattern pattern = Pattern.compile(doubleQuote + "|" + lineComment + "|" + blockComment);
Matcher matcher = pattern.matcher(str); while (matcher.find()) {
String matchedString = matcher.group(0);
if (!matchedString.startsWith("\"")) {
System.out.println(matchedString);
}
}
}
}
/* // "goto" */
// What's this.