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

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

在 Java 正則表達(dá)式中結(jié)合或否定?

在 Java 正則表達(dá)式中結(jié)合或否定?

米脂 2023-06-08 19:52:54
我正在嘗試結(jié)合使用“not”和“or”來生成一組正則表達(dá)式匹配,如下所示:"blah" matching "zero or more of" : "not h"         or  "any in b,l,a" = false "blah" matching "zero or more of" : "any in b,l,a"  or  "not h"        = false  "blah" matching "zero or more of" : "not n"         or  "any in b,l,a" = true  "blah" matching "zero or more of" : "any in b,l,a"  or  "not n"        = true  我嘗試了以下正則表達(dá)式,但它們似乎沒有達(dá)到我想要的效果。我還包括了我對正則表達(dá)式的解釋://first set attempt - turns out to be any of the characters within?System.out.println("blah".matches("[bla|^h]*"));    //trueSystem.out.println("blah".matches("[^h|bla]*"));    //falseSystem.out.println("blah".matches("[bla|^n]*"));    //falseSystem.out.println("blah".matches("[^n|bla]*"));    //false//second set attempt - turns out to be the literal textSystem.out.println("blah".matches("(bla|^h)*"));    //falseSystem.out.println("blah".matches("(^h|bla)*"));    //falseSystem.out.println("blah".matches("(bla|^n)*"));    //falseSystem.out.println("blah".matches("(^n|bla)*"));    //false//third set attempt - almost gives the right results, but it's still off somehowSystem.out.println("blah".matches("[bla]|[^h]*"));  //falseSystem.out.println("blah".matches("[^h]|[bla]*"));  //falseSystem.out.println("blah".matches("[bla]|[^n]*"));  //trueSystem.out.println("blah".matches("[^n]|[bla]*"));  //false所以,最后,我想知道以下幾點:我對上述正則表達(dá)式的解釋是否正確?符合我的規(guī)范的一組四個 Java 正則表達(dá)式是什么?(可選)我是否在我的正則表達(dá)式中犯了其他錯誤?關(guān)于模糊要求,我只想提出以下幾點:正則表達(dá)式細(xì)分可能類似于 ("not [abc]" or "bc")* ,它會匹配任何類似的字符串bcbc...或...字符所在的位置不是as、bs 或cs。我只是選擇“blah”作為一般示例,例如“foo”或“bar”。
查看完整描述

3 回答

?
侃侃無極

TA貢獻(xiàn)2051條經(jīng)驗 獲得超10個贊

要結(jié)合您的標(biāo)準(zhǔn),請在例如非捕獲組中使用單獨的替代字符集 [],因此

"[bla|^h]*"將會

(?:[bla]*|[^h]*)+

這類似于“至少出現(xiàn)一次(b,l,a或不是h)”

請記住,匹配*意味著“可能發(fā)生”(技術(shù)上為零或更多)


查看完整回答
反對 回復(fù) 2023-06-08
?
POPMUISE

TA貢獻(xiàn)1765條經(jīng)驗 獲得超5個贊

“not h”可以有多種寫法:


(?!.*h.*)

[^h]*

“b、l、a 中的任何一個” 1:


[bla]*

1) 假設(shè)您的意思是“只有 b、l、a 之一”,否則問題中的所有 4 個示例都是true


結(jié)合使用or將是:


[^h]*|[bla]*

這意味著“必須是一個不包含 的字符串h,或者必須是一個僅由b、l和a字符組成的字符串。


在這種情況下, 的順序|沒有區(qū)別,因此[^h]*|[bla]*和 的[bla]*|[^h]*作用相同。


System.out.println("blah".matches("[bla]*|[^h]*"));  //false

System.out.println("blah".matches("[^h]*|[bla]*"));  //false

System.out.println("blah".matches("[bla]*|[^n]*"));  //true

System.out.println("blah".matches("[^n]*|[bla]*"));  //true


查看完整回答
反對 回復(fù) 2023-06-08
?
慕工程0101907

TA貢獻(xiàn)1887條經(jīng)驗 獲得超5個贊

對于前 2 個條件,您可以使用:

^(?:[bla]|[^h])*$

接下來 2 你可以使用:

^(?:[bla]|[^n])*$

正則表達(dá)式詳細(xì)信息:

  • ^: 開始

  • (?:: 啟動非捕獲組

    • [bla]: 匹配其中之一b or l or a

    • |: 或者

    • [^h]: 匹配任何不是的字符h

  • )*: 結(jié)束非捕獲組,匹配0個或多個該組

  • $: 結(jié)束 正則表達(dá)式演示

請注意,對于.matches,錨點是隱式的,因此您可以省略^$。


查看完整回答
反對 回復(fù) 2023-06-08
  • 3 回答
  • 0 關(guān)注
  • 204 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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