1

特定の文字列で <、>、<=、>=、および = の中から演算子を検索し、式を 2 つの部分、つまり右の式と左の式に分割し、前に個別に評価するユースケースがあります。最後の条件演算子を評価します。

これは、次の例から理解できます。

Pattern pattern1 = Pattern.compile("(.*?)(<|>|<=|=|>=)(.*)");
Matcher matcher2 = pattern1.matcher("4>=5");
while (matcher2.find()) {
        System.out.println(matcher2.group(1) + ";" + matcher2.group(2)+ ";" + matcher2.group(3));
}

出力:

4;>;=5

予想される出力は、オペレーターが独立して存在するため4;>=;5>=オペレーターが分割されました。>

(<|>|<=|=|>=)貪欲な方法で句を評価し>=て、単一のエンティティとして扱われ、それらが一緒に発生した場合にリストダウンされるようにしたいと考えています。

4

2 に答える 2

2

あなたは単純化してみることができます

 pattern1 = Pattern.compile("(.*?)(>=?|<=?|=)(.*)");
于 2012-10-26T20:30:09.097 に答える
1
String testt = "4>=5";
System.out.println(testt.replaceAll("(.*?)(>=?|<=?|=)(.*)", "$1;$2;$3"));

わかりやすく一気に交換できます。前に < があると <= が得られなくなるという間違いがあったので、それらの 2 つの <= と >= を最初の場所に配置してください。

于 2012-10-26T20:32:48.860 に答える