首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex -如何忽略以下划线开头的字符串

Regex -如何忽略以下划线开头的字符串
EN

Stack Overflow用户
提问于 2015-10-15 19:48:50
回答 3查看 5.2K关注 0票数 2

我需要测试这个字符串,以匹配不以下划线开头的任何内容:

__$id0 = "foo"

我的方法是匹配以下划线开头的字符串,然后将该匹配变为负面的前瞻性,然后捕获其余的字符串。

对下划线的测试:

(_.*?\s)给了一个成功的答案:“__$id0

然而,把这变成一个消极的前景并不会产生预期的效果:

((?!_.*?\s).*?\s)的结果

代码语言:javascript
复制
MATCH 1
1.  [2-7]   `$id0 `
MATCH 2
1.  [7-9]   `= `
MATCH 3
1.  [9-16]  `"lala"`

下划线从第一个字符串中去掉,但是字符串本身仍然在结果集中。我想完全排除第一个字符串,因为它以_开头。

如何排除以_**?**开头的字符串?

其结果应该是:

代码语言:javascript
复制
MATCH 1
1.  [7-9]   `= `
MATCH 2
1.  [9-16]  `"lala"`

(资料来源:https://www.regex101.com/r/cC2pV7/1)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-10-15 20:36:21

下面是您不想保留的trick...match,然后匹配并捕获其他所有内容。

代码语言:javascript
复制
[\s]?_[^\s]*|\s?(.*?)\s+?

|管道的左侧,您将匹配以下划线开头的任何内容。如果它匹配的话,它就占据了正则表达式的那一边。否则,尝试匹配下划线的右侧,该下划线将被捕获,并匹配任何不以下划线开头的内容。

这还允许您在字符串中间或末尾出现下划线时进行匹配。

https://www.regex101.com/r/cC2pV7/3

票数 3
EN

Stack Overflow用户

发布于 2015-10-15 19:52:59

您应该首先使用^检查行的开头。然后,您想要匹配任何不是下划线的内容,所以您可以使用一个反转字符类:[^_]

代码语言:javascript
复制
^([^_].*?)\s*=\s*(.*?)

工作实例

票数 3
EN

Stack Overflow用户

发布于 2021-12-16 10:37:16

我知道这个标记,所有的东西似乎都说必须使用regex,但是如果它对某人有帮助的话,不如:

代码语言:javascript
复制
string_to_compare[0] =! '_'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33157251

复制
相关文章

相似问题

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