什么';这些相似的Java正则表达式之间的区别是什么?
这三个相关的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
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实现了该接口)