什么';这些相似的Java正则表达式之间的区别是什么?

什么';这些相似的Java正则表达式之间的区别是什么?,java,regex,Java,Regex,这三个相关的Java正则表达式是否只是做同一件事的不同语法 String resultString = subjectString.replaceAll("(?m)^\\d+\\.\\s*", ""); String resultString = subjectString.replace("^[0-9]+\\. *", ""); String resultString = subjectString.replaceAll('\\d+\.\\s+', ''); replace不接受regexp

这三个相关的Java正则表达式是否只是做同一件事的不同语法

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

replace
不接受regexp;它接受一个文本字符串(即,将真正搜索那些字符)
replaceAll
接受一个regexp


第三个无效,因为使用了单引号。单引号表示单个字符,这些字符是
char
。双引号创建的字符串(多个字符)是
String
s.

replace
不接受regexp;它接受一个文本字符串(即,将真正搜索那些字符)
replaceAll
接受一个regexp


第三个无效,因为使用了单引号。单引号表示单个字符,这些字符是
char
。双引号创建的字符串(多个字符)为
String
s.

结束,每个字符都替换一个数字,后跟一个句点和一个空格,即
11.
。但每一个都有细微的区别:

第一个将替换要求数字位于行首,空白可以是任何内容,即制表符

如前所述,第二个无效,但如果它是
replaceAll()
则空格只能是空格字符

第三个字符不必在行首,它将替换任何空白字符,就像第一个一样


其他的区别只是语法。

关闭,每一个都替换一个数字,后跟一个句点和一个空格,即
11。
。但每一个都有细微的区别:

第一个将替换要求数字位于行首,空白可以是任何内容,即制表符

如前所述,第二个无效,但如果它是
replaceAll()
则空格只能是空格字符

第三个字符不必在行首,它将替换任何空白字符,就像第一个一样


其他的区别仅仅是语法。

不,它们是不同的:

  • (?m)^\\d+\\.\\s*
    匹配
    • 一行开头的一个或多个数字(注意
      (?m)
      )中的m修饰符),后跟
    • 文本
      ,后跟
    • 或多个空白字符(相当于
      [\t\n\x0B\f\r]
  • ^[0-9]+\\*匹配项
    
    • 字符串开头的一个或多个数字,后跟
    • 文本
      ,后跟
    • 更多的空格
  • \\d+\.\\s+
    匹配
    • 任何位置的一个或多个数字,后跟
    • 文本
      ,后跟
    • 一个或多个空白字符

除此之外,因为,
replace
不需要正则表达式,而需要单个字符或字符序列(字符串实现该接口)。

否,它们不同:

  • (?m)^\\d+\\.\\s*
    匹配
    • 一行开头的一个或多个数字(注意
      (?m)
      )中的m修饰符),后跟
    • 文本
      ,后跟
    • 或多个空白字符(相当于
      [\t\n\x0B\f\r]
  • ^[0-9]+\\*匹配项
    
    • 字符串开头的一个或多个数字,后跟
    • 文本
      ,后跟
    • 更多的空格
  • \\d+\.\\s+
    匹配
    • 任何位置的一个或多个数字,后跟
    • 文本
      ,后跟
    • 一个或多个空白字符
除此之外,
replace
不需要正则表达式,只需要一个字符或字符序列(String实现了该接口)