检查字符串是否以_或数字(0-9)开头

时间:2013-11-18 15:11:21

标签: java regex string

我的代码解析XML文件以查找ID。但我只需要存储以_或某个数字开头的那些。

Node legacyNode = (Node) xPath2.evaluate(elem, XPathConstants.NODE);
Element legacyElem = (Element) legacyNode;
if (legacyElem != null) {
  String legacyId = legacyNode.getFirstChild().getNodeValue();
  if (legacyId.matches("_(.*)")) {
    entry.setLegacyID(legacyId);
  }
}

if (legacyId.matches("_(.*)"))检查以_开头的ID。我不知道应该改变它,所以它也会检查数字。

4 个答案:

答案 0 :(得分:3)

尝试使用正则表达式[_0-9](.*)而不是_(.*)

答案 1 :(得分:3)

这应该有效:

 legacyId.matches("^[_0-9].*$")

答案 2 :(得分:2)

为什么不只是子串并比较?:

String sample = /*whatever*/;
String check = sample.substring(0, 1);
if (check.matches("[0-9_]")) {
    // starts with number or _
}

根据以下评论建议进行编辑:

String sample = /*whatever*/;
String check = sample.substring(0, 1);
if ("_1234567890".indexOf(check) != -1) {
    // starts with number or _
}

请注意,您应检查字符串是否为空/无法启动

答案 3 :(得分:0)

如何将逻辑放入XPath表达式?这可能不会更快,但在某些情况下它可能会更优雅。