6

我正在使用正则表达式,因为我的句子包含项目符号空格数字和点。

• 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

4 回答 4

12

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

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

这应该与以下项目符号样式匹配:

  • 项目符号 (•)
  • 三角子弹 (‣)
  • 白色子弹 (◦)
  • 连字符号 (⁃)
  • 子弹运算符 (∙)

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

于 2013-08-16T06:02:36.080 回答
3

不要使用实际的“子弹”,而是使用 unicode 等效项:

\u2022\s\d\.\s[Az]

有关更多信息,请参阅Unicode 字符 'BULLET' (U+2022)正则表达式教程 - Unicode 字符和属性

编辑: 拆分行(假设每行是一个单独的字符串)试试这个:

String firstString = "• 1. 这是示例应用程序";
System.out.println(firstString.split("\\u2022\\s\\d\\.\\s")[1]);

这是有效的,因为String.split只要有匹配项,就会将您的字符串切割成一个数组。寻址该[1]数组中的第二项,即拆分的后半部分。

于 2013-08-16T05:54:13.883 回答
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);
于 2013-08-16T06:01:57.363 回答
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);
于 2013-08-16T05:58:16.897 回答