需要找到两个子字符串或两个其他子字符串的正则表达式

我需要JUST ONE正则表达式在C#.NET上运行,它将以任何顺序将(ABC | DEF)和(COMPUTER | CONSULTING)全部作为子字符串或无字符或任意数量的字符

anyNumberOrNoCharacters ABC anyNumberOrNoCharacters COMPUTER anyNumberOrNoCharacters
anyNumberOrNoCharacters COMPUTER anyNumberOrNoCharacters ABC anyNumberOrNoCharacters

要么

anyNumberOrNoCharacters DEF anyNumberOrNoCharacters CONSULTING anyNumberOrNoCharacters
anyNumberOrNoCharacters CONSULTING anyNumberOrNoCharacters DEF anyNumberOrNoCharacters

我可以找到这第一个

(?>ABC|DEF)

但我无法弄清楚如何将其中的两个放在一个声明中,并且要求两个人都认为它是匹配的

更新,以更好地描述我在找什么

这是什么不会被视为匹配

1)asdf ABC asdf DEF asdf(因为它没有COMPUTER或CONSULTING)2)asdf COMPUTER asdf CONSULTING asdf(因为它没有ABC或DEF)3)asdf ABCDEF asdf(因为它没有COMPUTER或CONSULTING)4 )asdfCOMPUTERCONSULTINGasdf(因为它没有ABC或DEF)5)asdf GHI asdf(因为它没有ABC或DEF,也因为它没有COMPUTER或CONSULTING)

这将是一场比赛

6)asda ABC asdf COMPUTER asdf 7)asda ABCCOMPUTER 8)asdf COMPUTER asda ABC asdf 9)asdfCOMPUTERABCasdfasdf

10)asda DEF asdf COMPUTER asdf 11)asda DEFCOMPUTER 12)asdf COMPUTER asda DEF asdf 13)asdfCOMPUTERDEFasdfasdf

14)asda DEF asdf CONSULTING asdf 15)asda DEFCONSULTING 16)asdf CONSULTING asda DEF asdf 17)asdfCONSULTINGDEFasdfasdf

18)asda ABC asdf CONSULTING asdf 19)asda ABCCONSULTING 20)asdf CONSULTING asda ABC asdf 21)asdfCONSULTINGABCasdfasdf

所以真的需要两组字符中的任何一个子字符串,但是必须找到这两个组合中的任何一个才能考虑任何匹配

此外,我正在寻找一个正则表达式的格式,可以在.net框架C#中使用该语法 - 似乎有与perl和javascript相比,.net c#语法的差异。


为了断言你的字符串中存在两个匹配,请尝试以下操作:

/^(?=.*(?>ABC|DEF))(?=.*(?>COMPUTER|CONSULTING)).+/

表达式解释:

  • ^断言字符串的开始位置。
  • (?=.*(?>ABC|DEF))声明字符串中存在“ABC”或“DEF” 。 没有回溯
  • (?=.*(?>COMPUTER|CONSULTING))声明字符串中存在“COMPUTER”或“CONSULTING” 。 没有回溯
  • .+现在我们的短语出现了,这个字符串是有效的。 继续并使用.+匹配整个字符串。
  • 这是一个正则表达式演示!

    阅读更多:

  • 正则表达式存在一些单词的顺序无关紧要
  • Lookahead和Lookbehind Zero-Length Assertions

  • 这是你想要的 ?

    (?:bABCb|bDEFb)|(?:bCOMPUTERb|bCONSULTINGb)
    
    链接地址: http://www.djcxy.com/p/76731.html

    上一篇: need regular expression that has find two substring or two other substring

    下一篇: Using regex to match any character until a substring is reached?