2012-02-22 4 views
3

偶数のスラッシュで奇数のスラッシュを置き換え、偶数のスラッシュをそのまま残す正規表現を書いています。しかし、私はエラーを取得しています何らかの理由:正規表現に問題はありますか?

int matchFlags = StringUtil.MATCH_SINGLELINE; 
int replaceFlags = StringUtil.REPLACE_ALL + StringUtil.REPLACE_BACKREFERENCES; 
String pattern = "(?<!/)/(//)*(?!/)"; //replace odd # of slashes only. 
String replace = "$0$0"; 
RE re = new RE(pattern, matchFlags); 
result= re.subst(result, replace, replaceFlags); 

これは例外です:

Exception in thread "main" org.apache.regexp.RESyntaxException: Syntax error: Missing operand to closure 
+1

あなたの質問にHTMLを使用しないでください。代わりに[Markdown](http://stackoverflow.com/editing-help)を使用してください。 – adarshr

+1

チップが – Wael

+0

奇数/スラッシュ///の//ありがとう、ありがとう/// ////".replaceAll("(? beerbajay

答えて

1

これが正常に動作します:

public class Test { 
    public static void main(String[] args) { 
     System.out.println(args[0].matches("(?<!/)/(//)*(?!/)")); 
    } 
} 

多分あなたのREは、何か別の

を期待します
+0

Apacheの正規表現ではありません。 –

+0

私はそれを否定しませんでした。私は、表現そのものが動作していることを示したかっただけです – Hachi

+0

apache reg expを使って同じ結果を得るにはどうすればいいですか? – Wael

2

負のルックアヘッドwiを使用することはできないようですth org.apache.regexp。たぶんあなたは他のライブラリを使用することを検討する必要があります...

+1

REを使って、 '(?<!/)'や '(?!/)' - あなたは見た目や先を使うことはできません。受け入れられる構文については、[here](http://jakarta.apache.org/regexp/apidocs/org/apache/regexp/RE.html)を参照してください。ただし、Java [Pattern](http://docs.oracle.com/javase/1.4.2/docs/api/java/util/regex/Pattern.html)を使用することもできます。 – Feysal