【问题标题】:RegEx : How to exclude a words from a match list正则表达式:如何从匹配列表中排除单词
【发布时间】:2012-01-03 16:32:48
【问题描述】:

我是 regex 的新手,但在从列表中排除单词时遇到问题

正则表达式:

(?<=[\s,*])[A-Za-z]\w*(?=[\s,*=;])

数据:

keyword1 Apple
keyword2    Beer=0
keyword1     China,    Dime, Egg,    Fly, Google,   Koala, Lime

结果:

Apple
keyword2 
Beer
keyword1
China
Dime
Egg
Fly
Google
Koala
Lime

我期望的结果很简单 Apple Beet China Dime Egg Fly Google Koala Lime

这个想法是: 如果我找到一个关键字 1 或关键字 2,则收集“下一个”字词 如果“下一个”单词用逗号 (,) 分隔,则收集逗号中的每个单词。 但不要在结果中包含关键字。

我已经尝试了一整天,但最后我意识到我需要帮助..

问候,

渡轮

【问题讨论】:

  • 你说A可以是苹果,B可以是啤酒等等。那么Apple and unwantedwordbeer and theunwantedwords有什么区别呢?
  • 抱歉混淆(我会解决这个问题),不需要的单词将在行首,它实际上需要的规则是:如果我找到不需要的单词然后找到“下一个”单词如果“下一个”单词除以逗号 (,),则在不需要的单词之后,然后捕获逗号中的每个单词。
  • Regex 有很多方言,每个方言都可能有自己特殊的转义序列:posix regex、perl regex、python regex、emacs regex...那么您使用哪种方言? (尽管它们共享所有一些原则,例如字符类)
  • 嗨,数学,你是对的.. 我使用 .Net 方言学习那些正则表达式,不幸的是我将它用于 Qt,我意识到(刚才)这是不同的。现在我正在尝试为 (?
  • 小软件提示:ultrapico.com/Expresso.htm - Expresso,一个快速编写和测试正则表达式的小工具。您也可以在那里更改正则表达式方言。 Afaik QT 使用 C++ 方言!?虽然不确定,但你可以试一试。

标签: regex


【解决方案1】:

如果你想排除“关键字”,你可以这样做:

(?!keyword)(?<=[\s,*])[A-Za-z]\w*(?=[\s,*=;])

结果: 苹果 啤酒 中国 十分钱 蛋 飞 谷歌 考拉

【讨论】:

    猜你喜欢
    • 2020-09-16
    • 1970-01-01
    • 2016-12-15
    • 1970-01-01
    • 2016-05-06
    • 1970-01-01
    • 2022-12-11
    • 1970-01-01
    • 2016-05-09
    相关资源
    最近更新 更多