[英]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}$
(?:[^"']|"[^"]*"|'[^']*')*?
首先,正则表达式引擎使用此[^"']
然后将其与以下*
组合,并尝试匹配任何字符,但不匹配'
或"
零次或多次。 如果发现双引号,则第一个模式[^"']
失败,并且正则表达式引擎选择下一个模式,即"[^"]*"
。 该模式将与字符串"foo"
, "bar"
等匹配。如果找到了'
符号,则控件将转移到第三个模式'[^']*'
。 因此,如果存在,则仅匹配正确引用的字符串。
(?'compositeMiddle'[^"].*)
[abc]
模式是匹配字符的集合,可以用^
取反。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.