我正在使用正则表达式,我的句子包含子弹空间数字和点。
• 1. This is sample Application
• 2. This is Sample java program
正则表达式:
•\\s\\d\\.\\s[A-z]
Required output:
This is sample Application.
This is Sample java program.
它无效。请建议我如何做到这一点。
答案 0 :(得分:8)
要匹配项目符号,您需要使用unicode转义序列。但是Unicode定义了几种子弹样式,因此最好允许所有这些样式:
[\u2022,\u2023,\u25E6,\u2043,\u2219]\s\d\.\s[A-z]
这应符合以下项目符号样式:
答案 1 :(得分:2)
不使用实际的'项目符号',而是使用等效的unicode:
\u2022\s\d\.\s[A-z]
有关详细信息,请参阅Unicode Character 'BULLET' (U+2022)和Regex Tutorial - Unicode Characters and Properties
修改强> 要分割线(假设每一行是一个单独的字符串),请尝试这样做:
String firstString = "• 1. This is sample Application"; System.out.println(firstString.split("\\u2022\\s\\d\\.\\s")[1]);
这是有效的,因为String.split
会将您的字符串剪切成数组,无论哪里有匹配项。 [1]
解决了该数组中的第二项,即拆分的后半部分。
答案 2 :(得分:1)
使用此
String a="• 1. This is sample Application";
a = a.replaceAll("\\u2022(?=\\s\\d\\.\\s[A-z])",""); // this will remove the • if only the bulet have \\s\\d\\.\\s[A-z] patern after it.
System.out.println(a);
答案 3 :(得分:0)
为什么regex
?你可以用这种方式
String str="• 1. This is sample Application";
String newStr=str.replaceAll("\\•|\\.","");
// Or str.replaceAll("\\u2022|\\.","");u2022 is unicode value of bullet
System.out.println(newStr);