2016-07-25 9 views
0

문자열의 백만 가지 다른 정규 표현식을 바꾸고 있습니다. 그래서 나는 모든 String regex와 String 치환을 file.txt에 저장하기로 결정했다. 내가 줄 단위로 파일을 읽으려고했는데 그것을 교체했지만 작동하지 않습니다.문자열의 수백만 다른 정규 표현식을 대체하십시오.

String user_input = "assume 100,000 words"; // input from user 
String regex_file = "replace_regex_file.txt"; 
String result=""; 
String line; 
try (BufferedReader reader = new BufferedReader(new FileReader(regex_file)) { 
    while ((line = reader.readLine()) != null) { // while line not equal null 
     String[] parts = line.split("\\s+", 2); //split process 
     if (parts.length >=2) { 
     String regex = parts[0]; // String regex stored in first array 
     String replace = parts[1]; // String replacement stored in second array 
     result = user_input.replaceAll(regex, replace); // replace processing 
     } 
    } 
} System.out.println(result); // show the result 

그러나 아무것도를 대체하지 않습니다 코딩 replace_regex_file.txt

aaa zzz 
^cc eee 
ww$ sss 
... 
... 
... 
... 
a million data 

. 이 문제를 어떻게 해결할 수 있습니까? 당신은 입력 문자열로 다시 교체의 결과를 할당하지 않기 때문에

+0

디버거를 사용하여 프로그램을 단계별로 실행 했습니까? – Idos

+0

String [] parts = line.split ("\\ s +", 2); 디버깅해야합니다. ;) – HRgiger

답변

0

현재 코드는, 마지막으로 일치하는 정규식을 적용합니다 : 대신

result = user_input.replaceAll(regex, replace); 

, 시도 :

String result = user_input; 

루프 바깥 쪽

result = result.replaceAll(regex, replace);