2 回答

TA貢獻(xiàn)1871條經(jīng)驗 獲得超8個贊
用
s.matches("(?s)(?!.*apple)[^.]*")
請參閱正則表達(dá)式演示(該模式針對單個多行字符串進(jìn)行了調(diào)整,請勿在演示中使用該模式)。
正則表達(dá)式的(?s)^(?!.*apple)[^.]*$
意思是:
(?s)
-匹配任何字符的Pattern.DOTALL
修飾符,.
包括換行符^
- 字符串的開始(隱含在.matches()
)(?!.*apple)
- 負(fù)前瞻,緊靠當(dāng)前位置的右側(cè)(在字符串開頭),匹配任何字符,盡可能多,后跟apple
子字符串(如果找不到模式,則不匹配)[^.]*
- 除點以外的 0+ 個字符$
- 字符串結(jié)尾(隱含在.matches()
)

TA貢獻(xiàn)1820條經(jīng)驗 獲得超10個贊
您需要包含點作為要排除的字符。由于.是正則表達(dá)式中的控制字符,因此必須對其進(jìn)行轉(zhuǎn)義:
^((?!apple|\.).)*$
在這種情況下,我們告訴它匹配 0 個或多個任何字符,只要沒有匹配 'apple' 或 '.' 的模式。字符串中的任何位置。
這個表達(dá)式可以解構(gòu)如下:
^ = Start of string
( = Start of capture group
( = Start of capture group
?! = Negative Look ahead
apple = First thing to look for
| = Logical Or
\. = Match a literal . character
) = End of capture group
. = Match any character
) = End of capture group
* = Match zero or more
$ = End of String
添加回答
舉報