这三个相关的Java正则表达式只是用于执行同一操作的不同语法吗?

String resultString = subjectString.replaceAll("(?m)^\\d+\\.\\s*", "");
String resultString = subjectString.replace("^[0-9]+\\. *", "");
String resultString = subjectString.replaceAll('\\d+\.\\s+', '');

最佳答案

不,它们是不同的:


(?m)^\\d+\\.\\s*个匹配项


行开头的一个或多个数字(请注意(?m)中的m修饰符),后跟
文字.,后跟
零个或多个空格字符(等效于[ \t\n\x0B\f\r]);

^[0-9]+\\. *个匹配项


字符串开头的一个或多个数字,然后是
文字.,后跟
零个更多的空间;

\\d+\.\\s+个匹配项


任何位置的一位或多位数字,后跟
文字.,后跟
一个或多个空格字符。



除此之外,作为Adrian Smith has notedreplace不希望使用正则表达式,而希望使用单个char或CharacterSequence(String实现该接口)。

09-11 05:11