我正在尝试学习正则表达式的基础知识(在Java中)并想象一些示例场景来练习,并且 - 正如您可能预期的那样 - 最后(因而对我来说最难)不起作用。这是:
<[a-zA-Z]>:[a-zA-Z]
我想要它做的是识别<SOME TEXT>:SOME MORE TEXT
。输入如:<foo>:bar
,它无效。
我做错了什么?
答案 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()));
}