我试图在正则表达式中编写一个组,该正则表达式与每个子字符串匹配,但以“"开头的子字符串除外。
长话短说,我的正则表达式是:以两个个人名字开头,以一个10位数字的id结尾的东西。我主要有三个组:名字,中间部分和ID。
所以它必须匹配
詹妮弗安从纽约,“智慧”str,bl。54,В,具有idВ1234567890
在……里面
her name was Jennifer Ann from New York, "Wisdom" str, bl 54, B, with id 1234567890 which is very rare但不能与以下内容相匹配:
her name was Jennifer Ann" from New York, "Wisdom" str, bl 54, B, with id 1234567890 which is very rare因为安之后的引语。现在我的中间组是这样的:
(?'compositeMiddle'.*?),它匹配所有的东西。我想让它匹配所有的东西,除了以:"开头的子字符串
发布于 2014-11-21 12:39:17
好像你想要这样的东西,
^[A-Z][a-z]+\s[A-Z][a-z]+(?:[^"']|"[^"]*"|'[^']*')*?\b\d{10}$演示
(?:[^"']|"[^"]*"|'[^']*')*?首先,regex引擎获取此[^"'],然后将其与下面的*组合,并尝试匹配任何字符,但不匹配'或" 0次或多次。如果创建双引号,则第一个模式[^"']失败,regex引擎选择下一个模式,即"[^"]*"。此模式将与字符串(如"foo"、"bar"等)相匹配。如果它创建了一个'符号,则该控件将传递给第三个模式'[^']*'。因此,它只匹配正确引用的字符串,如果它们存在。
发布于 2014-11-21 12:23:38
(?'compositeMiddle'[^"].*)[abc]模式是匹配字符的集合,它可以被^否定。
https://stackoverflow.com/questions/27061175
复制相似问题