3

我正在尝试查找字符串中是否存在模式。

我要检查的模式是:

以空格或“#”开头的字符串,
然后是特定字符串“value1”,后跟空格或制表符,
然后是“value2”,然后是空格或制表符,
以“value3”结尾。


这是一个要检查的示例字符串:

String str = "#  value1   values2 value3";

我尝试了以下正则表达式,但它不起作用:

str.matches("^\\s+#\\s+value1\\s+value2\\s+value3");

上述模式总是返回 me false。请帮助正则表达式。任何帮助将不胜感激。

4

3 回答 3

4

试试这个: -

str.matches("^[ #]value1\\s+value2\\s+value3$");

[ #]- 匹配空格或#

\\s+- 匹配 1 个或多个空格。因此,它将匹配空格或制表符

注意: - 你有values2而不是value2在你的字符串中。

此外,您发布的示例字符串在开头同时具有 aspace和 a 。#但是您说字符串以 aspace或 a开头##因此,如果您在第一个之后删除该空格,或者在您的空格之前删除该空格,它将匹配您的字符串,#这取决于您所写的内容。

如果您想在字符串的开头匹配 aspace和 a ,就像您当前发布的那样。你需要使用这个正则表达式: -#String

str.matches("^[ #]\\svalue1\\s+value2\\s+value3$");
于 2012-10-25T16:06:25.397 回答
1

好吧,我现在可以告诉你,那个正则表达式会因为那个输入而失败,因为它在#

尝试

str.matches("^#?\\s+value1\\s+value2\\s+value3$");

该正则表达式应匹配"# value1 value2 value3"" value1 value2 value3"具有可变数量的空格

于 2012-10-25T16:07:00.007 回答
0

试试这个正则表达式(\s+|\s?#\s?).*value1.*(\s+|\t).*value2.*(\s+|\t).*value3.* 即使你在任何地方都有空格它也能工作。

于 2015-02-13T09:38:12.233 回答