繁体   English   中英

匹配所有不以特定字符开头的子字符串的正则表达式中的组

[英]Group in regex that matches every substring that doesnt start with a specific character

我正在尝试在正则表达式中编写一个与每个子串匹配的组,除了以“ 开头的子串

长话短说,我的正则表达式是:以2个个人名字开头,以10位数字ID结尾的东西。 我主要分为3组:名称,中间部分和ID。

所以它必须匹配

来自纽约的 珍妮弗·安 Jennifer Ann) ,《智慧》 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'。*?)匹配所有内容。 我想使其与所有内容匹配,但以以下字符串开头的子字符串除外:

好像您想要这样的东西,

^[A-Z][a-z]+\s[A-Z][a-z]+(?:[^"']|"[^"]*"|'[^']*')*?\b\d{10}$

DEMO

(?:[^"']|"[^"]*"|'[^']*')*? 首先,正则表达式引擎使用此[^"']然后将其与以下*组合,并尝试匹配任何字符,但不匹配'"零次或多次。 如果发现双引号,则第一个模式[^"']失败,并且正则表达式引擎选择下一个模式,即"[^"]*" 该模式将与字符串"foo""bar"等匹配。如果找到了'符号,则控件将转移到第三个模式'[^']*' 因此,如果存在,则仅匹配正确引用的字符串。

(?'compositeMiddle'[^"].*)

[abc]模式是匹配字符的集合,可以用^取反。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM