这三个相关的 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 实现该接口(interface))。
关于java - 这些类似的 Java 正则表达式之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4158123/