通过正则表达式匹配 WORD 模式



>假设我有一个很大的段落,其中有单词像found field failed fired killed我知道很多负面单词!!

现在,我想获取单词从 fi hik 开头并以 elded 结尾的行

我将如何在字符串中搜索这种单词模式....??

请检查我问的是字符串中的单词模式,而不是字符串模式

这两个肯定不起作用

egrep "^(f[ai]|k)+(eld|ed)$"

egrep "<(f|k)+(eld|ed)$>"

承认我不是regex的绿巨人,这样做是出于基本的理解,所以任何愿意提出更好方法(带有一些描述)的人也是最受欢迎的!! :)

您可能正在寻找的正则表达式是

"b([fh]i|k)w*(eld|ed)b"

w*应该等同于 [a-zA-Z0-9_]* ,这样就允许任何类似单词的字符在请求的字符串之间。

b是为了确保这个词真的以你想要的字母开始和结束。否则,例如,您可能会包含单词的匹配字符串Unfailed

您还需要从正则表达式中删除$^ $因为这意味着行尾和行首^

我会使用

<(fi|hi|k)[a-zA-Z]*?(eld|ed)>

以匹配您想要的单词。

演示 @ 正则表达式101
(当您查看演示时:b<相同

解释:

<           #beginning of word
  (fi|hi|k)  #either fi or hi or k
  [a-zA-Z]*? #zero to unlimited of a-z and A-Z
  (eld|ed)   #either eld or ed
>           #end of word

如果要允许数字,破折号,下划线,...在你的单词中,只需将它们添加到字符类中,例如:如果您想也允许$_,则[a-zA-Z$_]

您可以使用单词边界b

^.*b(fi|hi|k)w*(eld|ed)b.*$
   ------------------------

此模式将选择包含这些单词的行

注意:您需要使用多行修饰符m和全局修饰符g

在这里尝试一下

相关内容

  • 没有找到相关文章

最新更新