2017-03-22 1 views
2

나는 방정식 해석을 위해 사용하고있는 정규 표현식을 무효화하는 표준 선행 방법을 시도했다. 문제는 그것이 작동하지 않는다는 것입니다.복잡한 정규 표현식 부정하기

샘플 방정식을 감안할 때 : 1 + 2X5 + 3 × 내가 곱셈의 the2 인스턴스를 분리 할

. 한 배열에 {1+, +}을, 다른 배열에 {2x5, 3x4}를 원합니다.

split ("\\ d + x \\ d")를 사용하여 첫 번째 배열을 가져 왔지만 다른 정규 표현식을 얻기 위해 해당 정규 표현식을 성공적으로 무효화 할 수 없습니다. 시간을내어 주셔서 감사합니다.

+0

@LutzL 방법이 질문에 그 대답은 직접 관련이? –

답변

0

곱셈 용어를 산출 할 원 라이너는 생각할 수 없지만 정규 표현식을 사용하여 추출하는 것은 매우 간단합니다. 일반적으로 당신은 아마 복잡한 산술 식을 처리하기 위해 파서을 이용해야한다는

String input = "1+2x5+3x4"; 
// you already found a way to identify the non multiplication terms 
String[] first = input.split("\\d+x\\d+"); 

String pattern = "(\\d+x\\d+)"; 
Pattern p = Pattern.compile(pattern); 
Matcher m = p.matcher(input); 
List<String> second = new ArrayList<>(); 
while (m.find()) { 
    second.add(m.group(1)); 
    System.out.println(m.group(1)); 
} 

참고. 그 파서는 내부적으로 정규식을 많이 사용할 수도 있지만 중첩 된 괄호를 얻는 즉시 정규식만으로는 제대로 작동하지 않습니다.

출력 :

2x5 
3x4 
+0

안녕하세요, 팀, 고마워요! 아직 파서를 보지 못했지만 지금은 확실히 파서를 할 것입니다. 일단 기본 순서를 정의하면 괄호를 처리하기 위해 재귀 할 계획이었습니다. 나는이 기회를 줄거야! – Joel