我正在试图制定一个正则表达式,该正则表达式包含了最后一个句号之后的所有内容,直到(不包括)句号之后的下划线3。
例如:
ABC_Simple_DEF.dbo.GDE_1_1_Contact_test应该返回GDE_1_1。
我试过使用[^.]+$,它包含了最后一段时间之后的所有内容。表达式_[^_]+$包括最后下划线和后面的所有内容,这是接近的,但不是我要找的东西。
有点被困在这里,希望能得到任何帮助
发布于 2019-07-05 08:39:16
发布于 2019-07-05 08:39:33
如果支持负后视,一个选项可以是断言左边的是一个点,并在匹配的点之后使用负前瞻性来断言更多的点:
(?<=\.)(?!.*\.)(?:[^_]+_){2}[^_]+解释
(?<=\.)负数后面,断言左边的东西不是一个点(?!.*\.)负展望,不要断言后面有更多的点(?:非捕获群[^_]+_匹配1+时间不是下划线,而是_
){2}关闭非捕获组并重复2次[^_]+匹配1+倍而不是_发布于 2019-07-05 09:22:26
与Wiktor的答案相比略有不同,它需要最后一个句号,并且捕捉到第三个下划线之前的所有内容,或者如果没有三个下划线(为了清晰起见,测试这里),直到结束为止:
\.([^._]*(_[^._]*){0,2})[^.]*$目标捕获组为1。为了更好地可视化,假设输入只包含下划线、句点和字符c,则如下:
\.(c*(_c*){0,2})c*$https://stackoverflow.com/questions/56899470
复制相似问题