这三个相关的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 noted,replace
不希望使用正则表达式,而希望使用单个char或CharacterSequence(String实现该接口)。