加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java正则表达式取代所有不替换所有单词

发布时间:2020-12-14 23:55:57 所属栏目:Java 来源:网络整理
导读:我已经在 Java中使用这个正则表达多年了,无法让它工作: (?:^| )(?:the|and|at|in|or|on|off|all|beside|under|over|next)(?: |$) 下列: pattern.matcher("the cat in the hat").replaceAll(" ") 给了我猫帽子.另一个例子输入是下一个帽子的猫,它给了我下一
我已经在 Java中使用这个正则表达多年了,无法让它工作:
(?:^| )(?:the|and|at|in|or|on|off|all|beside|under|over|next)(?: |$)

下列:

pattern.matcher("the cat in the hat").replaceAll(" ")

给了我猫帽子.另一个例子输入是下一个帽子的猫,它给了我下一个帽子的猫.

有没有什么方法可以让这个正则表达式替换工作,而不必将它们分解为每个单词的多个单独的正则表达式并尝试重复替换字符串?

解决方法

是的,你可以很容易地做到这一点你只需要使用 boundaries,这是你想要描述的:(?:^ |)只需这样做:
b(?:the|and|at|in|or|on|off|all|beside|under|over|next)b

您的原始文件没有捕获,但正如评论中提到的,如果您想捕获选项,则可以使用捕获而不是非捕获组:

b(the|and|at|in|or|on|off|all|beside|under|over|next)b

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读