我正试图在以下测试中获得true
。我有一个反斜杠的字符串,由于某种原因无法识别。
String s = "Good news\\ everyone!";
Boolean test = s.matches("(.*)news\\.");
System.out.println(test);
我尝试了很多变体,但只有一个(.*)news(.*)
有效。但这实际上意味着news
之后的所有字符,我只需要\
。
我该怎么做?
答案 0 :(得分:2)
将元素分组到最后:char[] input = {'a', 'b', 'c', 'd', 'e'};
char[] out = new char[input.length];
for (int i = 0; i < input.length; i++) {
out[i] = input[input.length-i-1];
}
答案 1 :(得分:1)
您可以改用:
Boolean test = s.matches("(.*)news\\\\(.*)");
答案 2 :(得分:0)
尝试类似:
Boolean test = s.matches(".*news\\\\.*");
这里。*表示任意数量的字符后跟新闻,后跟双反斜杠(以字符串形式转义),然后是任意数量的字符(也可以为零)。
使用正则表达式意味着:
在你的节目中不满足字符串&#34;好消息\每个人!&#34;
答案 3 :(得分:0)
您正在测试转义出现的字面点:// ...
function lintWorker(source) {
return gulp.src(source)
.pipe(tslint({
configuration: "tslint.json",
options : {
formatter: "prose"
}
}))
.pipe(tslint.report(stylish, {
emitError: false,
sort: true,
bell: true
}));
};
export function lint(source) {
let fn = () => {
return lintWorker(source);
};
fn.displayName = ["linting", ...source].join(" ");
return fn;
};
。
按如下方式重构您的模式(根据需要推断最后一部分以进行完全匹配):
"."
<强>输出强>
String s = "Good news\\ everyone!";
System.out.println(s.matches("(.*)news\\\\.*"));
<强>解释强>
true
中的反斜杠本身String
表示中,您需要双重转义反斜杠以表示文字反斜杠(Pattern
),因为双反斜杠已用于表示特殊构造(例如"\\\\"
),或者逃避它们(例如文字点\\p{Punct}
)。\\.
会尝试将整个 String.matches
与您的模式匹配,因此您需要我添加的模式的终端部分答案 4 :(得分:0)
你可以试试这个:
String s = "Good news\\ everyone!";
Boolean test = s.matches("(.*)news\\\\(.*)");
System.out.println(test);