Java Regex,如何编写查询

Java Regex,如何编写查询,java,regex,Java,Regex,如何使用以下文本编写正则表达式,其中绘制了文本和数字: String txt = "Map. 12. txt Map. 13. txt Map. 14 txt "; 我尝试用以下方式编写正则表达式: String regex = "(Map\\p{Punct}\\p{Space}])([0-9]+\\p{Punct})(.+)?(Map)"; 在分发收到:Map之后。12Txt映射,导致下一个分区从映射开始。14跳过包含的文本 在地图13和地图14之间 谢谢你的帮助。看来你想要这样的东西

如何使用以下文本编写正则表达式,其中绘制了文本和数字:

String txt = "Map. 12. txt Map. 13. txt Map. 14 txt "; 
我尝试用以下方式编写正则表达式:

 String regex = "(Map\\p{Punct}\\p{Space}])([0-9]+\\p{Punct})(.+)?(Map)";
在分发收到:Map之后。12Txt映射,导致下一个分区从映射开始。14跳过包含的文本 在地图13和地图14之间


谢谢你的帮助。

看来你想要这样的东西

String s = "String txt = \"Map. 12. txt Map. 13. txt Map. 14 txt ";
Matcher m = Pattern.compile("(Map\\p{Punct}\\p{Space})([0-9]+\\p{Punct})(.+?)\\s*(?=Map|$)").matcher(s);
while(m.find())
{
System.out.println(m.group());
}
输出:

Map. 12. txt 
Map. 13. txt 
这与地图不符。14 txt,因为数字14旁边没有标点符号。如果你想匹配它,你需要使标点符号模式成为可选的,比如

"(Map\\p{Punct}\\p{Space})([0-9]+\\p{Punct}?)(.+?)\\s*(?=Map|$)" 

在{Space}之后的方括号是什么?您期望的输出是什么?