我试图在正则表达式中编写一个组,该正则表达式与每个子字符串匹配,但以“"开头的子字符串除外。
长话短说,我的正则表达式是:以两个个人名字开头,以一个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
复制相似问题