我在Java 1.6中使用Java正则表达式(尤其是解析数字输出)并且找不到\b("单词边界")的精确定义.我假设这-12将是一个"整数字"(匹配 \b\-?\d+\b),但似乎这不起作用.我很想知道匹配空格分隔数字的方法.
例:
Pattern pattern = Pattern.compile("\\s*\\b\\-?\\d+\\s*");
String plus = " 12 ";
System.out.println(""+pattern.matcher(plus).matches());
String minus = " -12 ";
System.out.println(""+pattern.matcher(minus).matches());
pattern = Pattern.compile("\\s*\\-?\\d+\\s*");
System.out.println(""+pattern.matcher(minus).matches());
Run Code Online (Sandbox Code Playgroud)
返回:
true
false
true
Run Code Online (Sandbox Code Playgroud) 我们有这样的正则表达式:
var regexp = /^one (two)+ three/;
Run Code Online (Sandbox Code Playgroud)
因此,只有串像"one two three"或"one two three four"或"one twotwo three"等都会匹配.
但是,如果我们有字符串
"one "- 仍然很"有希望",可能很快就会匹配
但是这个字符串:
"one three"无论我们做什么都不会匹配.
有没有办法检查给定的字符串是否有机会匹配?
我需要它在写作期间的一些提示,当我想推荐所有以给定输入开头的选项时(正在使用的regexp很长,我不想真的搞乱它们).
换句话说 - 我想在检查期间检查字符串是否已经结束,并且没有遇到任何'不匹配'.
换句话说 - 答案是不匹配的原因.如果原因是字符串结束 - 那么它就会失败.但是我不知道有什么方法可以检查为什么有些字符串不匹配
我有一个逐步构建的字符串.在构建字符串时,它通过正则表达式作为整体进行匹配,并且当找到匹配时,执行某个任务.
我的要求是:如果在字符串构建过程的中间发现无法找到完全匹配,则应重置字符串并重新启动构建过程.
例如,如果正则表达式是,"mada12gaskar"并且在将char "3"添加到现有字符串时"mada1",应该清除该字符串,并且构建过程应该重新开始,因为它"mada13"永远不会匹配"mada12gaskar".这可以通过Java regex API实现吗?