Regex-最后一个句点和最后一个下划线之间的所有内容
我正在尝试制定一个正则表达式,它捕获上一个句点之后的所有内容,直到(不包括)句点之后的下划线3 例如:Regex-最后一个句点和最后一个下划线之间的所有内容,regex,Regex,我正在尝试制定一个正则表达式,它捕获上一个句点之后的所有内容,直到(不包括)句点之后的下划线3 例如: ABC_Simple_DEF.dbo.GDE_1_1_Contact_test 应返回GDE\u 1\u 1 我试过使用[^.]+$,其中包括上一个句点之后的所有内容。 表达式\u[^\ u]+$包含最后一个下划线和后面的所有内容,很接近,但不完全是我要查找的内容 有点困在这里,如果您能提供帮助,我将不胜感激 [^._]+(?:_[^._]+){2}(?=_[^.]*$) 或者,捕获方法(
ABC_Simple_DEF.dbo.GDE_1_1_Contact_test
应返回GDE\u 1\u 1
我试过使用[^.]+$
,其中包括上一个句点之后的所有内容。
表达式\u[^\ u]+$
包含最后一个下划线和后面的所有内容,很接近,但不完全是我要查找的内容
有点困在这里,如果您能提供帮助,我将不胜感激
[^._]+(?:_[^._]+){2}(?=_[^.]*$)
或者,捕获方法(您需要从结果中获取组1值):
见和
详细信息
-1+字符,而不是[^.\]+
和
-两次重复(?:[^.]+){2}
-下划线。
-1+字符,而不是[^.\]+
和
-正向前瞻,需要(?=[^.]*$)
和0+字符,而不是
,直到当前位置右侧的字符串末尾
(?<=\.)(?!.*\.)(?:[^_]+_){2}[^_]+
(?与Wiktor的答案稍有不同,需要最后一个句点并捕获所有内容,直到第三个下划线,或者如果少于三个,则捕获到最后一个下划线(为了清晰起见,删除非捕获组,测试):
目标捕获组为1。为了更好地可视化,假设您的输入仅包含下划线、句点和字符c
,则它将变为:
\.(c*(_c*){0,2})c*$
直接的“哑”正则表达式是:
([^.]*\.)*([^_]*_[^_]*_[^_]*).*
您需要分组\1
测试。完美,正是我想要的。谢谢!
\.(c*(_c*){0,2})c*$
([^.]*\.)*([^_]*_[^_]*_[^_]*).*