正则表达式Java模式

时间:2016-04-20 17:18:37

标签: java regex string char pattern-matching

我应该匹配两个大于0的数字,与空格分开

^\d+?\s\d+?$

我试过了,但显然不起作用 那么我也应该匹配一个以#开头并以#结尾的字符串,里面应该有一个固定数量的char,可以是由变量w-2确定的任何char。

String regex = "#.{" + (w - 2) + "}$";

return Pattern.matches(regex, stringToMatch );

尝试了但不起作用。

1 个答案:

答案 0 :(得分:0)

最有效的方式(我知道;)匹配非零数字,同时断言它是有效数字并允许前导零,是

\d*[1-9]\d*

这可以确保所有测试的字符都是数字,并且其中至少有一个不是零。

所以你的第一个宣言应该是

String regex = "^\\d*[1-9]\\d*\\s\\d*[1-9]\\d*$";

(你可以用环顾四周来做类似的事情,但效果不太好 - 特别是对于更长的数字。)

至于你问题的第二部分,如评论中所述,你已经忘记了结尾#。如果允许在其他文本之前和之后:

String regex = "#.{" + (w - 2) + "}#";

如果它应该是唯一的文字:

String regex = "^#.{" + (w - 2) + "}#$";

希望这有帮助。

此致