[英]What's the difference between SoftReference and WeakReference in Java?
[英]What's the difference between these similar Java regexes?
这三个相关的Java正则表达式只是用于执行同一操作的不同语法吗?
String resultString = subjectString.replaceAll("(?m)^\\d+\\.\\s*", "");
String resultString = subjectString.replace("^[0-9]+\\. *", "");
String resultString = subjectString.replaceAll('\\d+\.\\s+', '');
replace
不接受正则表达式; 它接受文字字符串(即实际上将精确搜索那些字符)。 replaceAll
接受一个正则表达式。
第三个无效,因为使用了单引号。 单引号代表char
各个字符。 双引号创建的字符串(多个字符)为String
。
不,它们是不同的:
(?m)^\\\\d+\\\\.\\\\s*
匹配
(?m)
m修饰符),后跟 .
, 其次是 [ \\t\\n\\x0B\\f\\r]
); ^[0-9]+\\\\. *
^[0-9]+\\\\. *
符合
.
, 其次是 \\\\d+\\.\\\\s+
符合
.
, 其次是 除此之外,正如Adrian Smith所指出的那样 , replace
并不期望使用正则表达式,而是期望使用单个char或CharacterSequence ( String实现该接口)。
关闭,每个替换一个数字,后跟一个句点,后跟空白 ,即11.
。 但是每个都有细微的差别:
第一个替换将要求数字位于行的开头,并且空格可以是任何内容,即制表符。
如前所述,第二个无效,但是如果使用replaceAll()
则空格只能是空格字符。
第三个字符不必在行的开头,并且将替换任何空格字符,例如第一个。
其他区别只是语法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.