我有一個正則表達式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());
}
我不能夠正確地捕捉到組,我需要捕獲基團例如「均值和之旅」「或」「的意思或芒果」。等等。 isValidFormula()調用的正則表達式。火柴()。在我們的案例中,匹配正常。分組不能正常工作
只有完整匹配包含這些空格。第2組只是'和'總是... – marekful
我需要一個正則表達式來捕獲像(蘋果和菠蘿OR或(雞蛋)和(菠蘿))字符串,在那裏我有一個詞的約束後應跟着一個謂詞「AND/OR 「而且它應該適當地捕獲這些羣體。如果我嘗試正則表達式匹配上述即時通訊不能正確捕獲組..有什麼辦法來解決? @marekful –
請編輯您的問題並顯示您嘗試過的實際問題和Java代碼。正則表達式對於每種語言/工具都略有不同,所以我認爲我們不應該僅基於Regex101鏈接來回答。 –