我试图了解正则表达式

时间:2018-01-26 14:48:01

标签: java pattern-matching metacharacters

1.基于此代码https://docs.oracle.com/javase/tutorial/essential/regex/test_harness.html

任何人都可以解释

\"%s\" 的内容
while (matcher.find()) {
        console.format("I found the text" + " \"%s\" starting at " +
        "index %d and ending at index %d.%n",
        matcher.group(),
        matcher.start(),
        matcher.end());
        found = true;
}

我只知道%s是字符串。

2.参考元字符https://docs.oracle.com/javase/tutorial/essential/regex/literals.html是否对此输出有任何解释?

enter image description here

2 个答案:

答案 0 :(得分:1)

\"%s\"表示你想在两个引号之间放一个字符串,例如结果可以是:

I found the text "some string"
//""-------------^           ^
// %s             ^_________^

%s用于字符串,如果你想使用数字,你可以使用%d等等

在Java引用中应该转义如何?你可以使用反斜杠\"所以请考虑我有一个包含这样的引号的字符串Hello "World"如何将它用作字符串在Java中:

String string = "Hello "World"";  //<<------- this is an error syntax

要解决它,你必须逃避引号:

String string = "Hello \"World\"";
                       ^      ^

看看https://docs.oracle.com/javase/8/docs/api/java/util/Formatter.html

答案 1 :(得分:1)

%中的百分号(String)与字母b,c,d,e,f,s组合用于限制要显示的字符数。

%b - 布尔人 %c - 字符
%d - 整数
%e - 科学记数法
%f - 浮点数(double,float)
%s - 字符串

例如:

String text = "abcdef";
System.out.printf("%.3s", text); //output:  abc

String text = "\"abcdef\"";
System.out.printf("%.3s", text); //output:  "ab