正则表达式 - 如何忽略以下划线开头的字符串

     2023-04-13     148

关键词:

【中文标题】正则表达式 - 如何忽略以下划线开头的字符串【英文标题】:Regex - how to ignore strings starting with underscore 【发布时间】:2016-01-14 10:13:08 【问题描述】:

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

__$id0 = "foo"

我的方法是匹配以下划线开头的字符串,然后将该匹配变为否定的前瞻并捕获其余部分。

测试下划线工作:

(_.*?\s) 一击:'__$id0'

但是,将其设为负前瞻并不会产生预期的效果:

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

MATCH 1
1.  [2-7]   `$id0 `
MATCH 2
1.  [7-9]   `= `
MATCH 3
1.  [9-16]  `"lala"`

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

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

结果应该是这样的:

MATCH 1
1.  [7-9]   `= `
MATCH 2
1.  [9-16]  `"lala"`

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

【问题讨论】:

只需将^ 放在最开始就可以从字符串的开头匹配。否则将从字符串的中间开始匹配。 您希望结果是什么样的? @saluce 添加了预期结果。 你可以试试这个:(?!_)\s+([a-zA-z0-9$"=_]+) @Grundy 之所以有效,是因为它与 \s 开头不匹配。将其更改为 \s* 并且您的正则表达式失败。让它在文本的中间,比如private string __$id0 = "lala",它就这样失败了。 【参考方案1】:

这是诀窍...匹配您不想保留的内容,然后匹配并捕获其他所有内容。

[\s]?_[^\s]*|\s?(.*?)\s+?

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

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

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

【讨论】:

【参考方案2】:

您应该首先使用^ 检查行首。然后,你想匹配任何 不是下划线的东西,所以你使用倒排字符类:[^_]:

^([^_].*?)\s*=\s*(.*?)

Working example

【讨论】:

1.) 最后,我想在一大块文本上使用它;我不认为起始锚会帮助我,但我会尝试 \b 。 2.)我想捕获用空格分隔的每个单个单词,除了带有下划线的单词。我试过修改这个来做到这一点,但它只是回到剥离_ 或者你也可以检查前面的空格(因为那些变量名不太可能有空格,对吧?)【参考方案3】:

我知道这个标签,而且一切似乎都说必须使用正则表达式,但如果它对某人有帮助,怎么样:

string_to_compare[0] =! '_'

【讨论】:

正则表达式-匹配:中文,英文,数字,下划线

1、一个正则表达式,只含有汉字、数字、字母、下划线不能以下划线开头和结尾:^(?!_)(?!.*?_$)[a-zA-Z0-9_/u4e00-/u9fa5]+$ 其中:^ 与字符串开始的地方匹配(?!_)  不能以_开头(?!.*?_$)  不能以_结尾[a-zA-Z0-9_/u4e00-/u9fa5]... 查看详情

不以序列开头的字符串的正则表达式

】不以序列开头的字符串的正则表达式【英文标题】:Regularexpressionforastringthatdoesnotstartwithasequence【发布时间】:2010-10-2807:37:40【问题描述】:我正在使用thisprogram处理一堆表格,但我需要忽略以标签“tbd_”开头的表格。到目前... 查看详情

求一个正则表达式:以英文字母开头,只能包含英文字母、数字、下划线

^[a-zA-Z][a-zA-Z0-9_]*$拓展:1.正则表达式:又称规则表达式。(英语:RegularExpression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表通常被用来检索、替换那些符合某个模式(规则)的文本。2.简介:正则表达式... 查看详情

正则表达式去除给定字符以外的字符?

】正则表达式去除给定字符以外的字符?【英文标题】:Regextostripcharactersexceptgivenones?【发布时间】:2012-06-1122:00:28【问题描述】:我想删除字符串,但只留下以下内容:[a-zA-Z]+[_a-zA-Z0-9-]*我正在尝试输出以字符开头的字符串,... 查看详情

正则表达式-匹配:中文,英文,数字,下划线

1、一个正则表达式,只含有汉字、数字、字母、下划线不能以下划线开头和结尾:^(?!_)(?!.*?_$)[a-zA-Z0-9_/u4e00-/u9fa5]+$ 其中:^ 与字符串开始的地方匹配(?!_)  不能以_开头(?!.*?_$)  不能以_结尾[a-zA-Z0-9_/u4e00-/u9fa5]... 查看详情

如何检测带有下划线的字符串的正则表达式模式

】如何检测带有下划线的字符串的正则表达式模式【英文标题】:Howtodetectregexpatternforstringswithunderscore【发布时间】:2021-12-2622:21:12【问题描述】:我正在尝试创建一个正则表达式来检测一个字符串在另一个字符串中的确切出现... 查看详情

js正则表达式

参考技术A一.正则表达式正则表达式:其实就是一种匹配规则,用于检索字符串定义正则表达式的两种方式:1.直接定义2.构造函数定义那么正则表达式正则强大的地方是它可以写通配符(拥有特殊含义的字符)二. 通配符\w表... 查看详情

正则表达式

1.什么是正则表达式能让计算机读懂的字符串匹配规则2.正则表达式的写法:varre=newRegExp(‘规则‘,‘可选参数‘);varre=/规则/参数;3.规则中的字符(1)普通字符匹配:如:/a/匹配字符‘a‘,/a,b/匹配字符‘a,b‘(2)转义字符... 查看详情

用于忽略自定义转义字符的正则表达式模式

】用于忽略自定义转义字符的正则表达式模式【英文标题】:RegexPatternforignoringacustomescapecharacter【发布时间】:2012-09-0919:38:36【问题描述】:我正在尝试找到一个合适的正则表达式来匹配输入字符串中的一对自定义字符。这些自... 查看详情

如何忽略正则表达式主题字符串中的空格?

】如何忽略正则表达式主题字符串中的空格?【英文标题】:Howtoignorewhitespaceinaregularexpressionsubjectstring?【发布时间】:2011-06-0304:22:08【问题描述】:在使用正则表达式模式搜索匹配项时,是否有一种简单的方法可以忽略目标字... 查看详情

正则表达式忽略负前瞻

】正则表达式忽略负前瞻【英文标题】:Regexignoresnegativelookahead【发布时间】:2021-12-1713:48:30【问题描述】:我有以下字符串:#index1#nJohnDoe#asomeUniversity#pc7#cn4#hi1#pi0.5889并想用正则表达式提取#n和以下#之间的部分。结果应该是:&q... 查看详情

如何使用正则表达式搜索忽略 NSPredicate 的某些字符?

】如何使用正则表达式搜索忽略NSPredicate的某些字符?【英文标题】:HowdoIuseregextosearchignoringcertaincharacterswithNSPredicate?【发布时间】:2011-11-0703:26:00【问题描述】:在希伯来语中,NSPredicate无法忽略某些元音,即使在谓词中使用... 查看详情

正则表达式替换为结尾和开头没有空格的字符串

】正则表达式替换为结尾和开头没有空格的字符串【英文标题】:Regexreplacetoastringwithoutspaceattheendandbeginning【发布时间】:2021-07-0715:39:57【问题描述】:我想从字符串中删除以下字符、_并将其设为initcap。OTHER_QUESTIONS,MISSING_DOCUMENT... 查看详情

js正则表达式要求密码的格式为6-12位,只能是字母、数字和下划线

这个是正则表达式:varreg=/^[\\w]6,12$/if(password.match(reg))alert("Thepasswordisvalid!");^只是一个标记,说明正则表达式的开始,$为结束的标记,与中的范围没有关系。正则表达式,又称规则表达式,计算机科学的一个概念。正则表... 查看详情

java验证,”支持6-20个字母数字下划线或减号,以字母开头“这个的正则表达式怎么写?(代码片段)

...个字母、数字、下划线或减号,以字母开头“这个的正则表达式怎么写?验证”支持6-20个字母、数字、下划线或减号,以字母开头“的正则表达式怎么写,谢谢亲们的帮助···················解决方案^[a-zA-Z][a-zA-Z0-9_-]51... 查看详情

您将如何使用正则表达式来忽略包含特定子字符串的字符串?

】您将如何使用正则表达式来忽略包含特定子字符串的字符串?【英文标题】:Howwouldyouusearegularexpressiontoignorestringsthatcontainaspecificsubstring?【发布时间】:2010-10-0612:54:17【问题描述】:如何使用否定的lookbehind(或任何其他方法)... 查看详情

如何使用正则表达式匹配不以某些字符开头或结尾的单词?

】如何使用正则表达式匹配不以某些字符开头或结尾的单词?【英文标题】:Howtomatchwordsthatdoesn\'tstartnorendwithcertaincharactersusingRegex?【发布时间】:2020-02-0605:18:22【问题描述】:我想查找不以某些特定字符开头或结尾的单词匹配... 查看详情

如何使用正则表达式在字符串表达式中查找以@开头的变量名?

】如何使用正则表达式在字符串表达式中查找以@开头的变量名?【英文标题】:Howtouseregextofindvariablenamebeginningwith@inastringexpression?【发布时间】:2021-11-2908:53:26【问题描述】:程序员希望通过正则表达式得到两个变量day1和day2,... 查看详情