检查模式是否存在的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");
上面的模式总是返回mefalse
。请帮助学习正则表达式。
任何帮助都将不胜感激。试试以下方法:-
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$");