2013-02-23 4 views
0

내가이 표현식을 가지고 있다고 말하면 I10I20I-3++이 나에게 27을 주어야합니다. 나는 그 문자열을 제거하는 방법을 찾을 수없는 것 같습니다. 또는 문자열의 다른 문자 인 경우 . 또한 표현식을 평가할 방법을 찾아야합니다. 나는 정규식을 사용하여 시도,하지만 운 :문자열에서 피연산자와 연산자 추출하기

public static String removeIs(String input) 
{ 
    //String check = input.replaceAll("[^/+/-/*//^0-9/-]+", " "); 
    String check = input.replaceAll("[^-+*/^0-9/-](?![^(]*\\))"," "); 
    return check; 
} 
+0

은 내가 어떻게 java'에서 중위 식을 평가하는'확인해야한다고 생각 링크 : HTTP : //stackoverflow.com/questions/7185589/how-to-calculate-expression-in-java – Arpit

+1

무엇인가'그 I10I20I-3 ++'? 테스트 문자열일까요? 무슨 뜻이야, 내게 27 ''줄래? – Wookie88

+0

@ Wookie88 - 피연산자가 'I'로 구분되는 계산기 식으로 연산자가 모두 끝에옵니다. – Perception

답변

1

비 운영자 숫자가 아닌 문자를 찾기위한 표현은 다음과 같습니다

[^0-9+\-\*\/]

당신은 Q 아래의 코멘트에서 말한 그 너는 계산기를 쓰고있어. 문자열에 숫자와 연산자가 알려지지 않았으므로 루프를 만들고 문자열을 반복하고 수식과 연산자를 사용하여 계산기에서 사용하고 regex 역 참조를 사용하지 않는 것이 좋습니다. Btw : I을 공백으로 바꾸는 이유는 무엇입니까? 문자열에 구분 기호가 무엇인지 당신에게 어떤 차이가 있습니까?

꽤 오래된 정규 표현식 기반 JS 코드 파서를 만들었습니다.이 경험을 통해 한 번에 모든 것을 파싱하는 괴물 같은 표현을 만드는 것이 일반적으로 좋지 않다는 것을 알 수 있습니다.

관련 문제