xxxxx?434334
「 」、「xxx?411112
」、「 」などの文字列がありますxxxxxxxxx?11113
。
""(文字まで来るすべて)をsubstring
適切に取得するにはどうすればよいですか?xxxxx
?
return s.substring(0, s.indexOf('?'));
そのための正規表現は必要ありません。
問題がある場合は、正規表現を使用してください。今、2 つの問題があります。
str = str.replaceAll("[?].*", "");
つまり、「疑問符文字以降のすべてを削除する」ということです。は?
特別な意味があるため、角かっこで囲む必要があります。
可能な限り正規表現の使用を避けるべきであるという他の回答に同意しますが、このシナリオで使用したい場合は、次を使用できます
Pattern regex = Pattern.compile("([^\\?]*)\\?{1}");
Matcher m = regex.matcher(str);
if (m.find()) {
result = m.group(1);
}
str は入力文字列です。
編集:正規表現の説明は、「?」以外の任意の文字グループに一致します。単一の「?」があります。グループの後
パターン ".*(?=\?)" も同様に機能するはずです。?= は正の先読みです。つまり、問題は引用符の前にあるすべてのものに一致しますが、引用符自体には一致しません。