如何检查字符串是否包含char序列和反斜杠“\”?

时间:2017-04-18 13:54:33

标签: java regex

我正试图在以下测试中获得true。我有一个反斜杠的字符串,由于某种原因无法识别。

String s = "Good news\\ everyone!";
Boolean test = s.matches("(.*)news\\.");
System.out.println(test);

我尝试了很多变体,但只有一个(.*)news(.*)有效。但这实际上意味着news之后的所有字符,我只需要\

我该怎么做?

5 个答案:

答案 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\\\\.*");

这里。*表示任意数量的字符后跟新闻,后跟双反斜杠(以字符串形式转义),然后是任意数量的字符(也可以为零)。

使用正则表达式意味着:

  • 。*任意数量的字符
  • news \\ - 匹配&#34; news \&#34; (见一个斜线)
  • 。后跟一个字符。

在你的节目中不满足字符串&#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\\\\.*"));

<强>解释

  • 反斜杠用于转义字符和Java true 中的反斜杠本身
  • 在Java String表示中,您需要双重转义反斜杠以表示文字反斜杠(Pattern),因为双反斜杠已用于表示特殊构造(例如"\\\\"),或者逃避它们(例如文字点\\p{Punct})。
  • \\.会尝试将整个 String.matches与您的模式匹配,因此您需要我添加的模式的终端部分

答案 4 :(得分:0)

你可以试试这个:

String s = "Good news\\ everyone!";
Boolean test = s.matches("(.*)news\\\\(.*)");
System.out.println(test);