私は正規表現https://regex101.com/r/PPbhRn/1を持っています。ここで私は、 "と"がキャプチャされると、上にキャプチャされた空白を見ることができます。その空白を取り除く方法はありますか?グループ化が正しく捕捉された場合にのみパターンが一致するかどうかを知りたいですか?正規表現のグループ化とマッチング
String validRegex="(((?:[(]* ?[a-z][a-z]+ ?[)]*)|[(]* ?(NOT) (?:[(]* ?[a-z][a-z]+ ?[)]*) ?[)]*)((AND|OR) ((?:[(]* ?[a-z][a-z]+ ?[)]*)|[(]* ?(NOT) (?:[(]* ?[a-z][a-z]+ ?[)]*) ?[)]*))*)";
String formula = "mean AND trip OR (mean OR mango) AND (mean AND orange) OR mango AND (test OR NOT help)";
Pattern p1 = Pattern.compile(validRegex, Pattern.CASE_INSENSITIVE | Pattern.DOTALL | Pattern.MULTILINE);
final Matcher matcher = p1.matcher(formula);
boolean result=MarketMeasureUtil.isValidFormula(formula);
System.out.println(result);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i));
System.out.println(matcher.group() + "starting at" + "index" + matcher.start()+ "and ending at index" +matcher.end());
}
私は適切にグループをキャプチャすることはできないんだけど、私はなど。「平均値との旅」「OR」「意味やマンゴー」のようなグループをキャプチャする必要があります。.. isValidFormula()は正規表現を呼び出します。 matches()。私たちの場合、マッチはうまくいきます。グループ化が期待通りに機能しない
完全一致のみにこれらのスペースが含まれています。グループ2はちょうど 'と'常に... – marekful
私は言葉のような制約が述語 "AND/ORに従うべきである(リンゴとパイナップルまたは(卵)AND(パイナップル))のような文字列をキャプチャする正規表現が必要です。グループを巧みに捉える必要があります。私は上記の私はグループを正しくキャプチャすることができないと一致する正規表現を試してみると、並べ替える方法はありますか? @marekful –
質問を編集し、実際の問題と試したJavaコードを表示してください。正規表現は各言語/ツールごとに若干異なりますので、私はRegex101リンクだけに基づいて答えるべきではありません。 –