-3

我正在尝试匹配包含[后跟 大于 0 的数字的字符串。

例如,我的正则表达式模式应该匹配如下字符串:

Sample.3cb11b[1].books.addressDetail.addrDetail2
Sample.3cb11b[28].books.addressDetail.addrDetail2

并且不应该匹配

Sample.3cb11b[0].books.addressDetail.addrDetail2

我尝试过类似的东西".*\\[[1-9].*"

4

2 回答 2

2

我已经尝试过这个正则表达式,它似乎工作:

^([a-zA-Z0-9]*).([0-9a-z]*)(\[[1-9][0-9]*?\])(.[a-zA-Z0-9]*){3}  // this is very exact, maybe too much

.*\[[1-9][0-9]*\].*  // this seems to also work, but only cares about the 'greater than 0' part 

这是regex tester的链接。

于 2019-01-04T07:55:52.300 回答
1

怎么样:.*\[0*[1-9][0-9]*\].*

简单的测试程序:

    String[] lines = {
        "Sample.3cb11b[1].books.addressDetail.addrDetail2",
        "Sample.3cb11b[28].books.addressDetail.addrDetail2",
        "Sample.3cb11b[0].books.addressDetail.addrDetail2"};
    for (String line: lines) {
        System.out.println(line + ": "
                + line.matches(".*\\[0*[1-9][0-9]*\\].*"));
    }
于 2019-01-04T08:06:48.430 回答