我有像“ xxxxx?434334
”,“ xxx?411112
”,“ xxxxxxxxx?11113
”等字符串。
如何substring
正确检索“ xxxxx
”(直到 ' ?
' 字符出现的所有内容)?
return s.substring(0, s.indexOf('?'));
不需要正则表达式。
如果您有问题,请使用正则表达式。现在你有两个问题。
str = str.replaceAll("[?].*", "");
换句话说,“删除问号字符之后的所有内容,包括问号字符”。必须用?
方括号括起来,否则它具有特殊含义。
我同意其他人的回答,即您应该尽可能避免使用正则表达式,但如果您确实想在这种情况下使用它,您可以使用以下内容
Pattern regex = Pattern.compile("([^\\?]*)\\?{1}");
Matcher m = regex.matcher(str);
if (m.find()) {
result = m.group(1);
}
其中 str 是您的输入字符串。
编辑:正则表达式的描述匹配任何不是“?”的字符组 并有一个“?” 团后
模式 ".*(?=\?)" 也应该可以工作。?= 是一个积极的前瞻,这意味着物质匹配引号之前的所有内容,但不匹配引号本身。