java中的正则表达式
如何验证单个点字符的表达式? 例如,如果我有一个表达式java中的正则表达式,java,regex,Java,Regex,如何验证单个点字符的表达式? 例如,如果我有一个表达式“trjb…fsf..ib.bi.”,那么它应该只返回索引15和18处的点。如果我使用Patternp=Pattern.compile(“(\\)+”)我明白了 4 .... 11 .. 15 . 18 . 试一试 Pattern.compile(“(?Try Pattern.compile(“(?在字符串的开头和结尾添加一个空格,然后使用该模式 "[^\\.]\\.[^\\.]" 在字符串的开头和结尾添加一个空格,然后使用该模式 "[^
“trjb…fsf..ib.bi.”
,那么它应该只返回索引15和18处的点。如果我使用Patternp=Pattern.compile(“(\\)+”)代码>我明白了
4 ....
11 ..
15 .
18 .
试一试
Pattern.compile(“(?Try
Pattern.compile(“(?在字符串的开头和结尾添加一个空格,然后使用该模式
"[^\\.]\\.[^\\.]"
在字符串的开头和结尾添加一个空格,然后使用该模式
"[^\\.]\\.[^\\.]"
你需要使用消极的观察
类似于Pattern.compile((?您需要使用负环视
类似于Pattern.compile((?这似乎可以做到这一点:
String input = "trjb....fsf..ib.bi.";
Pattern pattern = Pattern.compile("[^\\.]\\.([^\\.]|$)");
Matcher matcher = pattern.matcher(" " + input);
while (matcher.find()) {
System.out.println(matcher.start());
}
输入前面的额外空间有两个作用:
允许将
检测为输入字符串的第一个字符
将matcher.start()
偏移1以说明匹配的前面的字符
结果是:
15
18
这似乎起到了作用:
String input = "trjb....fsf..ib.bi.";
Pattern pattern = Pattern.compile("[^\\.]\\.([^\\.]|$)");
Matcher matcher = pattern.matcher(" " + input);
while (matcher.find()) {
System.out.println(matcher.start());
}
输入前面的额外空间有两个作用:
允许将
检测为输入字符串的第一个字符
将matcher.start()
偏移1以说明匹配的前面的字符
结果是:
15
18
在结尾处也添加一个空格…:)并在结尾处也添加一个空格…:)Amal,u pl能否解释该模式。我无法获得“.”字符前面没有“.”且后面没有“.”的表达式匹配项。请参阅Amal,u pl能否解释该模式。我无法获得“.”字符前面没有“.”且后面没有“.”的表达式匹配项。请参阅