Mathematica 11.x、74バイト
{}!=StringCases[#,StartOfString~~x__/;(x!=#&&StringReplace[#,x->""]=="")]&
ここで、全体を通して、#
入力文字列を表し、
StringCases[#,<pattern>]
パターンに一致する入力文字列の部分文字列を検索します
StartOfString~~x__/;(x!=#&&StringReplace[#,x->""]=="")
このパターンには一致が必要x
です。文字列の先頭から開始し、(1)一致が入力文字列全体ではなく、(2)入力文字列での一致の出現を空の文字列で置き換える場合の条件を満たす必要があります。空の文字列を取得します。最後に、一致するリストを空のリストと比較し、
{}!=
あるTrue
試合のリストが空でない場合やFalse
マッチのリストが空の場合。
テストケース:
{}!=StringCases[#,StartOfString~~x__/;(x!=#&&StringReplace[#,x->""]=="")]&["aa"]
(* True *)
{}!=StringCases[#,StartOfString~~x__/;(x!=#&&StringReplace[#,x->""]=="")]&["aaa"]
(* True *)
{}!=StringCases[#,StartOfString~~x__/;(x!=#&&StringReplace[#,x->""]=="")]&["abcabc"]
(* True *)
そして
{}!=StringCases[#,StartOfString~~x__/;(x!=#&&StringReplace[#,x->""]=="")]&["aba"]
(* False *)
{}!=StringCases[#,StartOfString~~x__/;(x!=#&&StringReplace[#,x->""]=="")]&["ababa"]
(* False *)
{}!=StringCases[#,StartOfString~~x__/;(x!=#&&StringReplace[#,x->""]=="")]&["weqweqweqweqweqw"]
(* False *)