首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >与不以特定字符开头的每个子字符串匹配的regex中的组

与不以特定字符开头的每个子字符串匹配的regex中的组
EN

Stack Overflow用户
提问于 2014-11-21 12:14:49
回答 2查看 93关注 0票数 0

我试图在正则表达式中编写一个组,该正则表达式与每个子字符串匹配,但以“"开头的子字符串除外。

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

所以它必须匹配

詹妮弗安从纽约,“智慧”str,bl。54,В,具有idВ1234567890

在……里面

代码语言:javascript
运行
复制
her name was Jennifer Ann from New York, "Wisdom" str, bl 54, B, with id 1234567890 which is very rare

但不能与以下内容相匹配:

代码语言:javascript
运行
复制
her name was Jennifer Ann" from New York, "Wisdom" str, bl 54, B, with id 1234567890 which is very rare

因为安之后的引语。现在我的中间组是这样的:

(?'compositeMiddle'.*?),它匹配所有的东西。我想让它匹配所有的东西,除了以:"开头的子字符串

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-21 12:39:17

好像你想要这样的东西,

代码语言:javascript
运行
复制
^[A-Z][a-z]+\s[A-Z][a-z]+(?:[^"']|"[^"]*"|'[^']*')*?\b\d{10}$

演示

(?:[^"']|"[^"]*"|'[^']*')*?首先,regex引擎获取此[^"'],然后将其与下面的*组合,并尝试匹配任何字符,但不匹配'" 0次或多次。如果创建双引号,则第一个模式[^"']失败,regex引擎选择下一个模式,即"[^"]*"。此模式将与字符串(如"foo""bar"等)相匹配。如果它创建了一个'符号,则该控件将传递给第三个模式'[^']*'。因此,它只匹配正确引用的字符串,如果它们存在。

票数 1
EN

Stack Overflow用户

发布于 2014-11-21 12:23:38

代码语言:javascript
运行
复制
(?'compositeMiddle'[^"].*)

[abc]模式是匹配字符的集合,它可以被^否定。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27061175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档