如何为子弹空间数字和点写正则表达式

时间:2013-08-16 05:41:30

标签: java regex

我正在使用正则表达式,我的句子包含子弹空间数字和点。

• 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.

它无效。请建议我如何做到这一点。

4 个答案:

答案 0 :(得分:8)

要匹配项目符号,您需要使用unicode转义序列。但是Unicode定义了几种子弹样式,因此最好允许所有这些样式:

[\u2022,\u2023,\u25E6,\u2043,\u2219]\s\d\.\s[A-z]

这应符合以下项目符号样式:

  • 子弹(•)
  • 三角子弹(‣)
  • 白色子弹(◦)
  • Hyphen Bullet(⁃)
  • 子弹操作员(∙)

参考:https://en.wikipedia.org/wiki/%E2%80%A2

答案 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);