我只需要一个正则表达式就可以在C# .NET上运行,它会发现(ABC \ of )和(计算机\##*##)都是子字符串或没有字符或它们周围任意数量的字符。
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 asdf (因为它没有计算机或咨询) 2) asdf计算机asdf咨询asdf (因为它没有ABC或DEF) 3) asdf ABCDEF asdf (因为它没有计算机或咨询) 4) asdfCOMPUTERCONSULTINGasdf (因为它没有ABC或DEF)
这里会被认为是匹配的
6) asda ABC asdf计算机asdf 7) asda ABCCOMPUTER 8) asdf计算机asda ABC asdf 9) asdfCOMPUTERABCasdfasdf
10) asda DEF asdf计算机asdf 11) asda DEFCOMPUTER 12) asdf计算机asda DEF asdf 13) asdfCOMPUTERDEFasdfasdf
14) asda DEF asdf咨询asdf咨询asda DEFCONSULTING 16) asdf咨询asda DEF asdf 17) asdfCONSULTINGDEFasdfasdf
18) asda ABC asdf咨询公司( 19) asda ABCCONSULTING ( 20) asdf咨询公司
因此,它确实需要这两组字符的任何子字符串,但必须找到这两组字符的子字符串才能考虑任何匹配。
另外,我正在寻找一个格式的正则表达式,它可以用这种语法在.net框架c#中使用--与.net c#相比,perl和javascript的语法似乎有所不同
发布于 2014-08-16 17:10:33
若要断言字符串中存在两个匹配项,请尝试如下:
/^(?=.*(?>ABC|DEF))(?=.*(?>COMPUTER|CONSULTING)).+/表达式解释:
^断言字符串开头的位置。(?=.*(?>ABC|DEF))断言字符串中存在"ABC“或"DEF"。没有回溯(?=.*(?>COMPUTER|CONSULTING))断言字符串中存在"COMPUTER“或"CONSULTING"。没有回溯.+现在我们的短语存在,这个字符串是有效的。继续使用.+来匹配整个字符串。这是一个regex演示!
阅读更多信息:
发布于 2014-08-16 13:58:38
这就是你要找的吗?
(?:\bABC\b|\bDEF\b)|(?:\bCOMPUTER\b|\bCONSULTING\b)https://stackoverflow.com/questions/25340655
复制相似问题