【问题标题】:Find all words that not contain specefic letter in a string using regex使用正则表达式查找字符串中不包含特定字母的所有单词
【发布时间】:2017-11-25 00:03:36
【问题描述】:

如何使用正则表达式查找字符串中不包含字母i 的所有单词。例如字符串是

This is my first regex example

输出应该是

my
regex
example 

编辑:我尝试了打击正则表达式,但没有工作

"\\b\\w*[^i]\\w*\\b"

【问题讨论】:

  • 你试过什么?为什么你需要正则表达式呢? (拆分和搜索会更容易)
  • @Crazy,更新了我的问题
  • 你是如何尝试这个正则表达式的?添加 Java 代码

标签: java regex


【解决方案1】:

试试这个正则表达式:

\b[^i\s]+\b

说明:

  • \b - a word-boundary - 返回单词和非单词字符之间的 0 长度匹配
  • [^i\s]+ - 匹配 1+ 个既不是 i 也不是空白字符的字符
  • \b - 单词边界

Click for Demo

Click for JAVA code

【讨论】:

  • 太好了,你能解释一下你的正则表达式吗?
  • 非常好的答案+1。不确定OP是否要匹配数字或下划线,在这种情况下他们可以使用\b[^i\W\d_]+\b
  • @FSm 添加了解释。
  • @ctwheels 感谢改进 :)
【解决方案2】:

正则表达式如下:

(?i)\\b[a-hj-z]+\\b

我们需要找到单词,为此我们在表达式的末尾和开头使用单词边界\b\b 之间的部分是匹配一个符号的类,该符号包含来自a-h 和来自j-z 的字母,我们没有在此范围内使用i 字母,因此匹配结果将像您需要的那样。为了匹配单词而不是这个范围内的一个符号,我们使用 + 来表示该类需要重复一次或多次。 表达式开头的(?i) 是一个标志,用于将所有字母解释为不区分大小写。

附:简单的正则表达式教程已经包含在Pattern java 类的 javadoc 中

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-27
    • 2011-12-09
    相关资源
    最近更新 更多