【发布时间】:2015-02-19 17:55:52
【问题描述】:
我目前正在学习信息学并且知道正则表达式是什么(不是在 java 中)。 我有这样的输入:
"String1 ( Nr = 323) String2 String3 (Nr = 3)"
我想通过以下方式拆分它:
split("[ ()=]");
因为我认为这会拆分所有“”,“(”,)”,“=”。我对吗?还是我需要在它后面加一个 + ?如果这已经是正确的,我可以添加一个 * 所以我也可以拆分为“((”?
)如果这不是问题,那么我关于 java 中正则表达式的另一个问题是如何检查我的字符串是否只包含数字。
我试过了:
contains(".*\\d+.*")
matches(".*\\d+.*")
但我很确定其中一个正在工作。所以我的问题应该是拆分正则表达式。
我最初的问题是,我在索引 2 处的拆分字符串数组得到了 NumberFormatException,通常应该是“323”?
我可以将我的正则表达式与* 一起使用吗?喜欢"[ ()=]*"?
提前致谢
【问题讨论】:
-
您期望的输出是什么?并检查一个字符串是否只有数字。
str.matches("\\d+") -
如果您想将
323作为索引2,您需要拆分一个或多个字符:split("[ ()=]+")。 -
如果你打算从字符串中提取数字而不关心其他数据,你可以检查
java.util.regex.Pattern和Matcher类。还有这个question/answer。 -
不是真的试图提取它我只是想知道数字是在索引 2 还是 4 (如 hwnd 赞成的答案中所述),所以我可以使用 splitString[2 创建我的对象] 或 splitString[4] 作为数字。不知道你是不是这个意思。