2 u014096409 u014096409 于 2017.09.05 15:37 提问

如下,我用正则写了一个文本匹配的程序,编译没错但是就是输出没有结果,很郁闷。。。

import java.util.*;
import java.util.regex.*;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileInputStream;

import java.io.FileOutputStream;
import java.io.InputStreamReader;

public class text2
{
public static void main(String args[]){
String Comment_Txt=readFile("D:/test/data/text.txt");
String Phrase_Txt=readFile("D:/test/data/phrase.txt");
//System.out.println(Comment_Txt);
String Rst="";
String[] s=Phrase_Txt.split(",");
for(int i=0;i<s.length;i++){
//System.out.println(s[i]);
char[] Sm=s[i].toCharArray();
for(int j=0;j<Sm.length;j++){
String m="["+Sm[i]+"]";

        Rst=Rst+m;
        //System.out.println(Rst);
    }

    //System.out.println(Rst);
    String regEx="[`~!@#$%^&*()+=|{}:;\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?a-zA-Z 0-9]";
    Matcher m_data=ConverCompile(Comment_Txt.toString().trim(),regEx);
    String result=m_data.replaceAll("").trim();
    Matcher n_data=ConverCompile(result,""+Rst+""); 

    //System.out.println(result);
    //System.out.println(n_data);
    while(n_data.find()){
        System.out.println(n_data.group());
        //System.out.println(22222);
}
//System.out.println(11111);

Rst="";

}
}

//正则匹配
private static Matcher ConverCompile(String result,String regEx){
Pattern c=Pattern.compile(regEx);
Matcher mc=c.matcher(result);
return mc;
}
//文件读取
private static String readFile(String road){
File file=new File(road);
String encoding="GBK";
String lineTXT=null;
if(file.isFile()&&file.exists()){
try{
InputStreamReader read=new InputStreamReader(new FileInputStream(file),encoding);
BufferedReader bufferedReader=new BufferedReader(read);
lineTXT=bufferedReader.readLine();
read.close();
}
catch(Exception e){
e.printStackTrace();
}
}
return lineTXT;
}
}

1个回答

caozhy
caozhy   Ds   Rxr 2017.09.05 15:39
 你的特殊符号中的* ^之类的都要转义
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
关于wintc编译成功,输出黑框中无结果显示
win-tc编译成功,也加了getch(),但是结果无显示(电脑是win7  32位) #include "stdio.h" #include "conio.h" main() {     printf("Hello, world\n");     getch(); } 像这种自带的小程序都无输出结果是为啥啊? 还有就是输出框的背景颜色也没法改变。。求解
算法 括号配对 stack
蒜头君在纸上写了一个串,只包含'('和')'。一个'('能唯一匹配一个')',但是一个匹配的'('必须出现在')'之前。请判断蒜头君写的字符串能否括号完全匹配,如果能,输出配对的括号的位置(匹配的括号不可以交叉,只能嵌套)。 输入格式 一行输入一个字符串只含有'('和')',输入的字符串长度不大于 500005000050000。 输出格式 如果输入括号不能匹配,输出一行"No",否则输
用正则表达式处理文本
用s///进行替换:     和m//用法一样,返回的是布尔值,替换成功为真,失败为假。     例:     $_ = "He's out bowling with Barney tonight.";     s/Barney/Fred/;  #把Barney替换成Fred, 也可以捕获位置, s///只会进行一次替换 用/g进行全部替换:     例:s/^\s+|
很出色为什么升职时却总没有我?
很多人在公司或单位里每天都很拼命在干,但到了升职的时候却总是没有自己,所以感到比较郁闷,你对这个问题怎么看? 1、你觉得一般在哪些情况下你表现很出色却不会被提升?(领导把你的业绩当自己的业绩、在各方面都表现得很好却总是不提升)你所接受到的有这方面的案例吗?能分几种情况说一下吗? 孙虹钢:     首先,你自己认为的“表现好”未必是领导认可的。以我的观察,绝大多数情况下,员工的自我
C语言代码,求高手解答,为什么没有错误,但是结果不对
#include #include char *cmonth(int month) { char str_month[]={ "Illegal Month" "January" "February" "March" "April" "May" "June" "July" "August" "September" "October" "November"
程序有误,为什么Keil却没有报错
这两天在整1602,程序都写完后用Keil编译,有报错,但后来都一一解决了,于是烧进单片机,可不管怎么调1602就是不显示,首先我可以确定硬件电路是没有问题的,因为我用另外一个程序往1602里面写一个字符串,就可以显示。最后我只得对照书上的源程序,一个字母一个字母比对,比较了有3次,问题依然没有找到,都有点灰心了,花了我一天半时间于是就放一边了。今天下班后再一次找错,总与知道错在了哪里, /**
正则表达式如何实现不替换查找的匹配文本?
大家都知道,正则表达式能够实现强大的查找规律文字并实现替换的功能。那么,是否能够实现不替换查找到的匹配文字呢?可能我问题描述得很拗口,大家看一下下面的需求例子便知: 21.循序渐进22.世俗23.间接经验与直接经验相结合24.教科书25.舒尔茨26.培养人27.人的全面发展28.皮亚杰29.德鲁克30.归宿31.民主平等32.因材施教33.从做中学34.钻研教材35.京师同文馆36.间接37.组
Python运行正常但是不出结果的可能问题
1、 检查主函数 是否有多余的 空格(待更新)
我的vc++6.0编译的时候没有问题,运行的时候为什么总是报告一个错误?
# include void main () {   printf("h"); } 编译是没有错误,运行的时候总是报告这个错误--------------Configuration: oop - Win32 Debug-------------------- Linking... LINK : fatal error LNK1104: cannot open file "D
VS2010编写的c++程序输出结果一闪而过怎么解决
之前自己都是用Visual C++编写c++程序的,今天试了下用VS,结果发现程序运行之后,结果一闪就没了。 【解决方案】 方法1:不要直接按绿色的运行键,而是选择调试->开始执行(不调试) 方法2:加入命令system(“pause”);