java - 这些类似的 Java 正则表达式之间有什么区别?

标签 java regex

这三个相关的 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 不需要正则表达式,而是单个 charCharacterSequence(String 实现该接口(interface))。

关于java - 这些类似的 Java 正则表达式之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4158123/

相关文章:

java split regex - 任意字符组合

java - 如何使用正则表达式java从字符串中提取第一个字母和后面的三个数字

javascript - Google Places Autocomplete,如何处理地址中的单元号

java - 源代码无法编译——未报告异常java.lang.Exception;必须被捕获或宣布被扔出

java - 更快的字符串匹配/迭代方法?

java - 实现复合模式的递归函数?

r - 迷失在 R 中使用 which() 和正则表达式

java - 单击按钮用力关闭 Activity

java - C中是否有与指针函数类似的java ByteBuffer函数

c++ - 将字符串作为正则表达式模式输入传递。 (非标量误差)