Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查模式是否存在的Java正则表达式_Java_Regex - Fatal编程技术网

检查模式是否存在的Java正则表达式

检查模式是否存在的Java正则表达式,java,regex,Java,Regex,我试图找出字符串中是否存在模式 我要检查的模式是: 以空格或“#”开头的字符串, 然后使用特定字符串“value1”,后跟空格或制表符, 然后选择“value2”,再选择空格或制表符, 以“value3”结尾 下面是要检查的示例字符串: String str = "# value1 values2 value3"; 我尝试了以下正则表达式,但无效: str.matches("^\\s+#\\s+value1\\s+value2\\s+value3"); 上面的模式总是返回mefals

我试图找出字符串中是否存在模式

我要检查的模式是:

以空格或“#”开头的字符串,
然后使用特定字符串“value1”,后跟空格或制表符,
然后选择“value2”,再选择空格或制表符,
以“value3”结尾


下面是要检查的示例字符串:

String str = "#  value1   values2 value3";
我尝试了以下正则表达式,但无效:

str.matches("^\\s+#\\s+value1\\s+value2\\s+value3");
上面的模式总是返回me
false
。请帮助学习正则表达式。 任何帮助都将不胜感激。

试试以下方法:-

str.matches("^[ #]value1\\s+value2\\s+value3$");
[#]
-匹配空格或#

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

注意:-字符串中有
values2
而不是
value2

另外,您发布的示例字符串的开头有一个
空格
和一个
#
。但是您说过字符串以
空格
开头。因此,如果您删除第一个
后面的空格,或者根据您编写的内容删除空格前面的
,则它将匹配您的字符串

如果要匹配字符串开头的
空格
#
,如当前发布的
字符串
。您需要使用此正则表达式:-

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

好的,我现在可以告诉你,正则表达式对于该输入将失败,因为它需要在

试一试

该正则表达式应将
“#value1 value2 value3”
“value1 value2 value3”
与可变的空白量相匹配尝试此正则表达式
(\s+\s?#\s?.*value1.*(\s+\t)。*value2.*(\s+\t.*value3.

即使在任何地方都有空格,它也可以工作。

要求:“从空格或“#”开始”“@JanDvorak它确实是以空格开头的,#@JanDvorak在
#?
之后是以空格开头的。
\\s+
不需要空格来匹配吗?
\\s+
总是需要空格来匹配。@JanDvorak那么我发布的正则表达式将只匹配以
开头的字符串,或者不需要空格。你认为询问者需要吗?”匹配
“value1 values2 value3”
,因为您的正则表达式将与之不匹配。@JanDvorak啊,对不起。我弄糊涂了。实际上,OP写了一些别的东西,他的示例字符串说了一些别的东西。@RohitJain你知道吗,你可以点击你的分数,看看你的答案是否被否决。我想不会,因为你的答案一个也没有收到,但你似乎认为我downvoted@JanDvorak. OP有一个字符串:-
#value1 values2 value3
,并说他想以空格或#开头,所以我想他可能想要一个空格和#或两个空格。也许他的意思是
或空格或两者兼而有之。你想在开始处匹配一个空格还是两个空格?想匹配空格或制表符-\\s+你说你想匹配字符串是以
还是
空格开始。但是您发布的字符串以两个开头:-
#value1 values2 value3
。它有一个
后跟一个空格。您是否意识到
字符串str=“#value1 values2 value3”
在values2中有一个S,这是因为您的正则表达式不工作?(除了\\s#之外,使用@RohitJain one)
str.matches("^#?\\s+value1\\s+value2\\s+value3$");