Wei*_*ing 3 java regex android
我对java模式中的限定符用法感到困惑:第一段代码:
private void testRegex(String patternString) {
Pattern pattern = Pattern.compile(patternString);
Matcher matcher = pattern.matcher("::::::::");
if (matcher.find()) {
Log.d("regex", matcher.group());
} else {
Log.d("regex", "not match");
}
}
Run Code Online (Sandbox Code Playgroud)
然后我尝试testRegex(":?"),testRegex(":*"),testRegex(":+")分别; 结果是:
":","::::::::","::::::::";
Run Code Online (Sandbox Code Playgroud)
这是完全正确的我知道,但是:
我在下面尝试另一段代码:
private void testRegex(String patternString) {
Pattern pattern = Pattern.compile(patternString);
Matcher matcher = pattern.matcher("sip::::::::");
if (matcher.find()) {
Log.d("regex", matcher.group());
} else {
Log.d("regex", "not match");
}
}
Run Code Online (Sandbox Code Playgroud)
结果是:
""(empty String),""(empty String),"::::::::"
Run Code Online (Sandbox Code Playgroud)
谁能告诉我地球上发生了什么?先感谢您!
在?和*运营商也有零发生部分在它们的功能,当第一个字符不匹配,他们会停在那里,因为它们匹配0的时间,这是允许的.
:?
Run Code Online (Sandbox Code Playgroud)

:*
Run Code Online (Sandbox Code Playgroud)

[看到他们有路由绕过:]
:+
Run Code Online (Sandbox Code Playgroud)

在:+它的情况下它只能尝试1或更多,这意味着它试图找到这个存在的1次出现,:一旦它有它,它会消耗所有以下,:如果它可以找到它们.没有路由可以绕过:.
| 归档时间: |
|
| 查看次数: |
122 次 |
| 最近记录: |