1

我正在尝试学习正则表达式的基础知识(在 Java 中),并设想了一些示例场景来练习,并且 - 正如您可能已经预料到的那样 - 最后一个(因此对我来说最难)不起作用。这里是:

<[a-zA-Z]>:[a-zA-Z]

我想要它做的是识别<SOME TEXT>:SOME MORE TEXT. 使用类似的输入:<foo>:bar,它不起作用。

我究竟做错了什么?

4

2 回答 2

3

你只匹配一个字符。要匹配多个,您需要添加“+”:

<[a-zA-Z]+>:[a-zA-Z]+

如果文本是可选的,您还可以指定“*”,表示“零个或多个”。'+' 表示“1 个或多个”

于 2012-07-01T15:32:49.267 回答
1

如果你还想从字面上捕捉“某些文本”,你也需要捕捉空白。

    String teststring = "<SOME TEXT>:SOME MORE TEXT";
    String regex = "<[\\sa-zA-Z]+>:[\\sa-zA-Z]+";
    Matcher m = Pattern.compile(regex).matcher(teststring);
    while (m.find())
    {
        System.out.println(teststring.substring(m.start(), m.end()));
    }
于 2012-07-01T15:50:00.290 回答