RegEx查找复合词

RegEx查找复合词,regex,Regex,我写了这个正则表达式 [Cc]ommercial \b(([Cc]omputer )?(software|source code)?\b)|([Oo]ff((-)?|( )?)[Tt]he((-)?|( )?)[Ss]helf|item) 要匹配这些词: “商业软件”或“COTS”或“商业现货”或“商业现货”或“商业现货”或“商业商品”或“商业计算机软件”或“商业源代码”或“商业计算机源代码” 但我不想让“商用电脑”自己去匹配。如何修复我的正则表达式?这很有效,允许您省略复数 ([Cc]omm

我写了这个正则表达式

[Cc]ommercial \b(([Cc]omputer )?(software|source code)?\b)|([Oo]ff((-)?|( )?)[Tt]he((-)?|( )?)[Ss]helf|item)
要匹配这些词:

“商业软件”或“COTS”或“商业现货”或“商业现货”或“商业现货”或“商业商品”或“商业计算机软件”或“商业源代码”或“商业计算机源代码”


但我不想让“商用电脑”自己去匹配。如何修复我的正则表达式?

这很有效,允许您省略复数

([Cc]ommercial ((\bcomputer\b )?(\bsoftware\b|source \bcode\b)|\bitem\b|[Oo]ff(-)?( )?[Tt]he(-)?( )?[Ss]helf))|\bCOTS\b

对于regex的使用,IMO的要求太多了,最好将每个组包含类似要求的较小的regex情况分开。很难维护或读取正则表达式的真正功能。如果要匹配卷曲引号,请将它们添加到模式中,请参阅