gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 15:23:26 24 4
gpt4 key购买 nike

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

__$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)

最佳答案

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

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

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

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

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

关于c# - 正则表达式 - 如何忽略以下划线开头的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33157251/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com