java easy正则表达式

时间:2012-05-28 11:22:06

标签: java regex

我的字符串类似于" xxxxx?434334"," xxx?411112"," xxxxxxxxx?11113"等等。

如何substring正确检索" xxxxx" (一切都是直到' ?'字符)?

4 个答案:

答案 0 :(得分:6)

return s.substring(0, s.indexOf('?'));

不需要正则表达式。

如果您遇到问题,请使用正则表达式。现在你有两个问题。

答案 1 :(得分:4)

str = str.replaceAll("[?].*", "");

换句话说,“删除问号字符后的所有内容”。 ?必须括在方括号中,否则它具有特殊含义。

答案 2 :(得分:0)

我同意其他人的答案,你应该尽可能避免使用正则表达式,但如果你确实想在这种情况下使用它,你可以使用以下

Pattern regex = Pattern.compile("([^\\?]*)\\?{1}");
Matcher m = regex.matcher(str);
if (m.find()) {
    result = m.group(1);
}

其中str是你的输入字符串。

编辑: 正则表达式的描述匹配任何不是“?”的字符组。有一个“?”小组之后

答案 3 :(得分:0)

模式"。*(?= \?)"也应该工作。 ?=是一个积极的先行,这意味着mattern匹配引号之前的所有内容,但不匹配引号本身。