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

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

重寫正則表達式以在 Java 中使用

重寫正則表達式以在 Java 中使用

滄海一幻覺 2022-07-27 16:49:02
我已經編寫(?<=pp_).*(?=')了正則表達式來匹配pp_字符串中的內容,例如['newPage', 'pp_vii', -1]我的正則表達式在在線測試器中運行良好(請參閱在線正則表達式驗證器),但在 Java 中卻不行。我失敗的代碼:Pattern pattern = Pattern.compile("(?<=pp_).*(?=')");String input = "['newPage', 'pp_vii', -1])";Matcher m = pattern.matcher(input);boolean match = m.matches(); // false
查看完整描述

2 回答

?
偶然的你

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

該matches()方法檢查完整的字符串匹配,而不是使用find()檢查子序列匹配的方法。最后,您可以使用group()方法來獲取匹配的子序列字符串。


public static void main(String[] args) {

Pattern pattern = Pattern.compile("(?<=pp_).*(?=')");

String input = "['newPage', 'pp_vii', -1])";

Matcher m = pattern.matcher(input);

boolean a = m.find(); 


if(a){

    String out = m.group();

    System.out.println("Match : " + out);

}


查看完整回答
反對 回復 2022-07-27
?
慕仙森

TA貢獻1827條經驗 獲得超8個贊

你的正則表達式很好。Matcher.matches()如果完整的 String 與模式 ( docs )匹配,則該方法僅返回 true。你應該Matcher.find()改用。這會找到與模式 ( docs ) 匹配的下一個子序列。


Pattern pattern = Pattern.compile("(?<=pp_).*(?=')");

String input = "['newPage', 'pp_vii', -1])";

Matcher m = pattern.matcher(input);

boolean stringMatches = m.matches(); // false

boolean isThereMatch = m.find(); // true

System.out.println(isThereMatch + " " + stringMatches);

System.out.println(m.group());

打?。?/p>


true false

vii


查看完整回答
反對 回復 2022-07-27
  • 2 回答
  • 0 關注
  • 122 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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