我正在尝试学习正则表达式的基础知识(在 Java 中),并设想了一些示例场景来练习,并且 - 正如您可能已经预料到的那样 - 最后一个(因此对我来说最难)不起作用。这里是:
<[a-zA-Z]>:[a-zA-Z]
我想要它做的是识别<SOME TEXT>:SOME MORE TEXT
. 使用类似的输入:<foo>:bar
,它不起作用。
我究竟做错了什么?
你只匹配一个字符。要匹配多个,您需要添加“+”:
<[a-zA-Z]+>:[a-zA-Z]+
如果文本是可选的,您还可以指定“*”,表示“零个或多个”。'+' 表示“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()));
}