我为这个措辞拙劣的问题道歉。你知道吗
我有很多字符串,比如:
"ODLS_ND33283633__PS1185"
第一个"_"
之前的第一个字母是头,其余的(ND33283633\uu PS1185)是唯一的ID
我用python编写了一个regex,试图删除第一个"_"
需要的所有内容
"ND33283633__PS1185"
作为最终结果。你知道吗
我想是这样的:
.*_? or .+?_
会成功的,但事实并非如此。。。你知道吗
我一直尝试编写各种正则表达式,但都没有成功,最后我上网找到了另一个人的答案,我可以用这个例子重写为:
^[^_]+_
这给了我想要的结果,但现在我有一些问题我想不出答案:
我发现去掉前面的“^”,写成:
[^_]+_
导致regex删除第二个“\”之前的所有内容,因此生成的字符串是:
"_PS1185"
我知道"^"
标识为行的开头,但我想知道为什么不包括它,直到第二行前面没有“^”呢?你知道吗
我的理解是[^_]+
匹配不等于"_"
1或更多次的字符,那么为什么在开头包含“^”会导致它在第一个停止,而排除它会导致它在第二个停止呢?你知道吗
另一件事,当我用"*"
替换"+"
符号时:
[^_]*_
我期待着同样的结果,但却得到了:
PS1185
我认为*
匹配0或更多,而+
匹配1或更多,所以它们实际上是相同的,除了+应该更“严格”。然而,看到这些结果让我觉得我没有完全理解regex的行为。有人能解释一下到底发生了什么吗?你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐