l117934641 2009-04-20 11:47
浏览 188
已采纳

正则表达式的问题

正则表达式,\B:非单词边界,
String str = "b4aab";
String regex = "\Ba\B";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(str);
System.out.println(m.matches());

String regex = "\Ba\B";//这个正则表达式的意思是不是不以单词a为边界
字符串"b4aab"应该和这个正则表达式匹配,那么返回结果应该为true
但程序运行结果为false
请教大家解决一下
谢谢...
[b]问题补充:[/b]
楼下的说详细点,还是不怎么懂这个\B

  • 写回答

5条回答 默认 最新

  • rednaxelafx 2009-04-22 13:09
    关注

    话说楼主就不试试lookingAt()和find()了么……
    [code="java"]import java.util.regex.*;

    public class Test {
    public static void main(String[] args) {
    String str = "b4aab";
    String regex = "\Ba\B";
    Pattern p = Pattern.compile(regex);
    Matcher m = p.matcher(str);
    System.out.println(m.find()); // true
    }
    }[/code]
    \B就是非单词边界,也就是这样一个位置,其左边与右边要么同时能够被\w匹配,要么同时能够被\W匹配。所有“边界”都是长度为零的匹配,匹配的是“位置”而不是字符序列。Java里\w是[a-zA-Z_0-9],而\W是[^\w]。
    如果有这样一个字符串,"!aab",然后用"\Ba\B"通过find()去匹配,那么第一个匹配会是下标为2的a,因为在匹配到第一个a的时候,其左边是一个单词边界,无法满足\B的匹配条件。如果用同一个正则表达式去匹配"_aab",那么第一个匹配就会是下标为1的那个a,道理同上。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题