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

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

這個(gè) group() 如何捕捉文本?

這個(gè) group() 如何捕捉文本?

牧羊人nacy 2022-05-25 16:54:50
我遇到了這個(gè) Hackerrank 問(wèn)題,正則表達(dá)式應(yīng)該匹配 HTML 標(biāo)簽之間的字符串。正則表達(dá)式和字符串是String str="<h1>Hello World!</h1>";String regex="<(.+)>([^<]+)</\\1>";另外,如果“str”有多個(gè)類似的 HTML 標(biāo)簽,String str="<h1><h1>Hello World!</h1></h1>"以及如何([^<]+)捕獲這個(gè)“str”,該怎么辦。我的問(wèn)題是如何([^<]+)匹配 'str' 而不是([a-zA-Z]+)。如果完整的源代碼在這里:import java.util.regex.Matcher;import java.util.regex.Pattern;/* Solution assumes we can't have the symbol "<" as text between tags */public class Solution{    public static void main(String[] args){        Scanner scan = new Scanner(System.in);        int testCases = Integer.parseInt(scan.nextLine());        while (testCases-- > 0) {            String line = scan.nextLine();            boolean matchFound = false;            Pattern r = Pattern.compile(regex);            Matcher m = r.matcher(line);            while (m.find()) {                System.out.println(m.group(2));                matchFound = true;            }            if ( ! matchFound) {                System.out.println("None");            }        }    }}不要介意我是否愚蠢地問(wèn)這個(gè)問(wèn)題并提前謝謝你!
查看完整描述

2 回答

?
紅糖糍粑

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

這個(gè)正則表達(dá)式保證你的字符串只包含一個(gè)標(biāo)簽,假設(shè) HTML 輸入格式良好。

首字母<(.+)>捕獲您的標(biāo)簽的名稱。捕獲組還將獲得它可以獲得的任何屬性。由于+是一個(gè)貪婪的量詞,如果可以的話,它將捕獲多個(gè)標(biāo)簽。

尾隨</\\1>與第一組捕獲的任何內(nèi)容相匹配。這就是為什么如果您的 HTML 格式正確,則表達(dá)式不會(huì)捕獲多個(gè)標(biāo)簽或帶有屬性的標(biāo)簽:

  • 開始標(biāo)簽<h1>,結(jié)束標(biāo)簽</h1>?

  • 開始標(biāo)簽<h1 attr="value">,結(jié)束標(biāo)簽</h1>,但期待</h1 attr="value">

  • 開始標(biāo)簽<h1><h2>,結(jié)束標(biāo)簽</h2></h1>,但期待</h1><h2>

這就是為什么標(biāo)簽可以.+相當(dāng)安全地匹配,而內(nèi)容必須匹配[^<]+。您要確保不抓取內(nèi)容中的任何停留標(biāo)簽,但允許使用任何其他字符。[^<]+(發(fā)音?!安?code><,至少一次)允許類似的事情!,但[A-za-z]肯定不會(huì)。


查看完整回答
反對(duì) 回復(fù) 2022-05-25
?
繁華開滿天機(jī)

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

如果輸入字符串是,Hello World!([a-zA-z]+)由于感嘆號(hào) (!) 和空格字符而無(wú)法正確匹配。

更清楚地說(shuō),這是每個(gè)正則表達(dá)式的含義:

  • ([a-zA-Z]+)匹配由字母(大寫或小寫)組成的序列(1 個(gè)或多個(gè)字符)

  • ([^<]+)只要字符不是< 字符,就匹配一個(gè)序列(1 個(gè)或多個(gè)字符)


查看完整回答
反對(duì) 回復(fù) 2022-05-25
  • 2 回答
  • 0 關(guān)注
  • 131 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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