空でもnullでもない文字列を正規表現でマッチングする方法について、どのように記述すればよいでしょうか。
空でもnullでもない文字列に一致する正規表現は次のように書けます:
^(?![\s\S]*$)\S+$
説明:`^`は文字列の先頭をマッチさせる`(?![\s\S]*$)`は否定的な先読みアサーションで、後ろに空白文字や任意の文字が全くないことを確認する`\S+`は1つ以上の非空白文字にマッチする`$`は文字列の末尾にマッチする使用例:
String regex = "^(?![\\s\\S]*$)\\S+$"; String input = "abc"; boolean isMatch = input.matches(regex); System.out.println(isMatch); // 输出 true input = null; isMatch = input.matches(regex); System.out.println(isMatch); // 输出 false input = " "; isMatch = input.matches(regex); System.out.println(isMatch); // 输出 false
この正規表現は、少なくとも1つの空白以外の文字を含む文字列とマッチしますが、空の文字列、空白のみの文字列、またはnullとはマッチしません。