亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何為以下字符串編寫正則表達式?

如何為以下字符串編寫正則表達式?

九州編程 2023-03-09 11:32:43
在給定的字符串中,我只想在“ENERGY:”之后提取字符串1562173405047|INFO|MyHalfDuplexModem@30:println|ENERGY: -s 1 -d 2 -b 288 -e 9.999788799994675071125   T   {-s 1, -d 2 }1562173405552|INFO|MyHalfDuplexModem@43:println|ENERGY: -s 3 -d 2 -b 96 -e 9.999779196127731100294   R   {-s 3, -d 2 }1562173406122|INFO|MyHalfDuplexModem@43:println|ENERGY: -s 1 -d 2 -b 288 -e 9.999764796127731100294   R   {-s 1, -d 2 }1562173406194|INFO|MyHalfDuplexModem@43:println|ENERGY: -s 2 -d 1 -b 96 -e 9.999759995924876667052   T   {-s 2, -d 1 }這是我的代碼:public static void main(String[] args) {    //movies = new ArrayList<movie>();       realPath = "Z:\\UNET\\3 NODE 1 SOURCE\\log-0.txt";       File f = new File(realPath);       if ( !f.exists()) {          System.err.println("file path not specified");       }       try {        String regex1 = "[0-9]+\|INFO\|MyHalfDuplexModem@[0-9]+:println\|ENERGY:";        Scanner sc = new Scanner(f);            while (sc.hasNextLine()) {                String nextLine = sc.nextLine();                if ( !nextLine.matches(regex1)) {                     System.out.println(nextLine);                }            }            //   sc.close();         } catch(Exception e) {              throw new RuntimeException(e);         }       }我嘗試了以下正則表達式,但它不起作用: regex1 = "[0-9]+[|]INFO[|]MyHalfDuplexModem@[0-9]+:println|ENERGY:";
查看完整描述

2 回答

?
慕斯王

TA貢獻1864條經驗 獲得超2個贊

稍微逃避你應該是好的:


regex1 = "[0-9]+\|INFO\|MyHalfDuplexModem@[0-9]+:println\|ENERGY:";

                                                        ^^ this was the problem

                                                        |

                                                        `- this is the fix

沒有逃逸|是一種交替,有效地導致"[0-9]+|INFO|MyHalfDuplexModem@[0-9]+:println" OR "ENERGY:"


另請注意,它\|與[|]. 我更喜歡前者。


查看完整回答
反對 回復 2023-03-09
?
慕森王

TA貢獻1777條經驗 獲得超3個贊

我想,這一個抓住了你想要的。它不是在 Java 中,它是純正則表達式。


ENERGY:\s(.*)


這是Java示例


public static void main(String[] args) {

    Pattern p = Pattern.compile("ENERGY:\\s(.*)");

    String st = "1562173405047|INFO|MyHalfDuplexModem@30:println|ENERGY: -s 1 -d 2 -b 288 -e 9.999788799994675071125   T   {-s 1, -d 2 }\n" +

            "1562173405552|INFO|MyHalfDuplexModem@43:println|ENERGY: -s 3 -d 2 -b 96 -e 9.999779196127731100294   R   {-s 3, -d 2 }\n" +

            "1562173406122|INFO|MyHalfDuplexModem@43:println|ENERGY: -s 1 -d 2 -b 288 -e 9.999764796127731100294   R   {-s 1, -d 2 }\n" +

            "1562173406194|INFO|MyHalfDuplexModem@43:println|ENERGY: -s 2 -d 1 -b 96 -e 9.999759995924876667052   T   {-s 2, -d 1 }";

    Matcher mt = p.matcher(st);


    while (mt.find()) {

        String group = mt.group(1);

        System.out.println(group);

    }

}

輸出:


-s 1 -d 2 -b 288 -e 9.999788799994675071125   T   {-s 1, -d 2 }

-s 3 -d 2 -b 96 -e 9.999779196127731100294   R   {-s 3, -d 2 }

-s 1 -d 2 -b 288 -e 9.999764796127731100294   R   {-s 1, -d 2 }

-s 2 -d 1 -b 96 -e 9.999759995924876667052   T   {-s 2, -d 1 }


查看完整回答
反對 回復 2023-03-09
  • 2 回答
  • 0 關注
  • 95 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號