匹配冒号两侧的文本

时间:2012-07-01 15:31:24

标签: java regex

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

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

我想要它做的是识别<SOME TEXT>:SOME MORE TEXT。输入如:<foo>:bar,它无效。

我做错了什么?

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:1)

如果你想从字面上理解“SOME TEXT”,你也需要抓住空白区域。

    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()));
    }