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ù)上為零或更多)

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

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
,錨點是隱式的,因此您可以省略^
和$
。
添加回答
舉報