第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

模式匹配器返回意外值

模式匹配器返回意外值

回首憶惘然 2023-09-13 10:13:54
你能看一下下面結(jié)果中的模式(java)嗎?我預(yù)計(jì)結(jié)果應(yīng)該給我 3 個(gè)組值,但相反它給了我 2 個(gè)值,只是我認(rèn)為我錯(cuò)過(guò)了一些東西。package com.mycompany.testapp;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * * @author bo17a */public class NewClass {    public static void main(String[] args){        Pattern mPattern = Pattern.compile("^love (.*?) way you (.*?)$");        Matcher matcher = mPattern.matcher("love the way you lie");        if(matcher.find()){            String[] match_groups = new String[matcher.groupCount()];            System.out.println(String.format("groupCount: %d", matcher.groupCount()));            for(int j = 0;j<matcher.groupCount();j++){                System.out.println(String.format("j %d",j));                match_groups[j] = matcher.group(j);                System.out.println(match_groups[j]);            }        }    }}我得到的結(jié)果是:2love the way you liethe但我的預(yù)期結(jié)果應(yīng)該是:3love the way you liethelie更新我嘗試按照回復(fù)中的建議添加一組號(hào)碼:/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */package com.mycompany.testapp;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * * @author lee */public class NewClass {    public static void main(String[] args){        Pattern mPattern = Pattern.compile("^love (.*?) way you (.*?)$");        Matcher matcher = mPattern.matcher("love the way you lie");        if(matcher.find()){            String[] match_groups = new String[matcher.groupCount()];                System.out.println(String.format("groupCount: %d", matcher.groupCount()));                for(int j = 0;j<=matcher.groupCount();j++){                    System.out.println(String.format("j %d",j));                    match_groups[j] = matcher.group(j);                    System.out.println(match_groups[j]);                }        }    }}我已經(jīng)在 Windows 10 JDK 8 Mac OS JDK 8 上嘗試過(guò)。那么,這可能是 Java 中的一個(gè)錯(cuò)誤,因?yàn)槟愫臀覍?duì)相同的代碼有不同的結(jié)果?
查看完整描述

2 回答

?
狐的傳說(shuō)

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超3個(gè)贊

我的猜測(cè)是,您還希望以團(tuán)隊(duì)形式捕捉完整比賽,


^(love (.*?) way you (.*?))$

或者直接在你的計(jì)數(shù)器上加 1:


測(cè)試1

import java.util.regex.Matcher;

import java.util.regex.Pattern;



public class RegularExpression{


    public static void main(String[] args){


        Pattern mPattern = Pattern.compile("^love (.*?) way you (.*?)$");

        Matcher matcher = mPattern.matcher("love the way you lie");

        if(matcher.find()){

            String[] match_groups = new String[matcher.groupCount() + 1];

                System.out.println(String.format("groupCount: %d", matcher.groupCount() + 1));

                for(int j = 0;j<matcher.groupCount() + 1;j++){

                    System.out.println(String.format("j %d",j));

                    match_groups[j] = matcher.group(j);

                    System.out.println(match_groups[j]);

                }

        }


    }

}

輸出

groupCount: 3

j 0

love the way you lie

j 1

the

j 2

lie

測(cè)試2

import java.util.regex.Matcher;

import java.util.regex.Pattern;



public class RegularExpression{


    public static void main(String[] args){


        final String regex = "^(love (.*?) way you (.*?))$";

        final String string = "love the way you lie";


        final Pattern pattern = Pattern.compile(regex, Pattern.DOTALL);

        final Matcher matcher = pattern.matcher(string);


        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));

            }

        }


    }

}

輸出

Full match: love the way you lie

Group 1: love the way you lie

Group 2: the

Group 3: lie

正則表達(dá)式電路

jex.im可視化正則表達(dá)式:

https://img1.sycdn.imooc.com//65011b2c0001ec6609950210.jpg


查看完整回答
反對(duì) 回復(fù) 2023-09-13
?
九州編程

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超4個(gè)贊

顯然,matcher.groupCount()在您的情況下返回 2,因此您只需構(gòu)造兩個(gè)字符串的數(shù)組并將數(shù)字小于 2 的組復(fù)制到其中,即組 0(整個(gè)字符串)和組 1(“the”)。如果您matcher.groupCount()在整個(gè)代碼中添加 1,它將按預(yù)期工作。



查看完整回答
反對(duì) 回復(fù) 2023-09-13
  • 2 回答
  • 0 關(guān)注
  • 133 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)