Java 在冒号的任意一侧匹配文本
我正在努力学习正则表达式的基础知识(Java),并设想了一些示例场景进行练习,而正如您所预料的那样,最后一个(对我来说也是最难的)不起作用。这是:Java 在冒号的任意一侧匹配文本,java,regex,Java,Regex,我正在努力学习正则表达式的基础知识(Java),并设想了一些示例场景进行练习,而正如您所预料的那样,最后一个(对我来说也是最难的)不起作用。这是: <[a-zA-Z]>:[a-zA-Z] :[a-zA-Z] 我想让它做的是识别:更多的文本。如果输入像::bar,则无法工作 我做错了什么?您只匹配了一个字符。要匹配多个,需要添加“+”: <[a-zA-Z]+>:[a-zA-Z]+ :[a-zA-Z]+ 如果文本是可选的,还可以指定“*”,这意味着“零或更多”。“+”
<[a-zA-Z]>:[a-zA-Z]
:[a-zA-Z]
我想让它做的是识别:更多的文本。如果输入像::bar
,则无法工作
我做错了什么?您只匹配了一个字符。要匹配多个,需要添加“+”:
<[a-zA-Z]+>:[a-zA-Z]+
:[a-zA-Z]+
如果文本是可选的,还可以指定“*”,这意味着“零或更多”。“+”表示“1个或多个”您只匹配一个字符。要匹配多个,需要添加“+”:
<[a-zA-Z]+>:[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()));
}
String teststring=“:更多文本”;
字符串regex=“:[\\sa-zA-Z]+”;
Matcher m=Pattern.compile(regex).Matcher(teststring);
while(m.find())
{
System.out.println(teststring.substring(m.start(),m.end());
}
如果您还想从字面上捕捉“一些文本”,您还需要捕捉空白
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()));
}
String teststring=“:更多文本”;
字符串regex=“:[\\sa-zA-Z]+”;
Matcher m=Pattern.compile(regex).Matcher(teststring);
while(m.find())
{
System.out.println(teststring.substring(m.start(),m.end());
}
如果文本中有空格,请不要忘记空格。我还不需要空格。但是谢谢你的注意@如果文本中有空格,请不要忘记空格。我还不需要空格。但是谢谢你的注意@IgorChubinNo,我不需要空白。尽管如此,还是要谢谢你+1.如果想简化代码,可以用System.out.println(m.group())替换print语句代码>。不,我不需要空白。尽管如此,还是要谢谢你+1.如果想简化代码,可以用System.out.println(m.group())替换print语句代码>。