[英]Regex, how to write query
如何用以下文本编写正则表达式,以绘制文本和数字:
String txt = "Map. 12. txt Map. 13. txt Map. 14 txt ";
我试图通过以下方式编写正则表达式:
String regex = "(Map\\p{Punct}\\p{Space}])([0-9]+\\p{Punct})(.+)?(Map)";
分发收到后:(Map。12.)(Txt)(Map),这导致下一个分区从Map开始。 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
这与Map. 14 txt
不符Map. 14 txt
Map. 14 txt
因为数字14旁边不存在标点符号。如果您也想与此匹配,则需要将标点符号样式设为可选,例如,
"(Map\\p{Punct}\\p{Space})([0-9]+\\p{Punct}?)(.+?)\\s*(?=Map|$)"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.