【发布时间】:2019-11-03 06:03:39
【问题描述】:
我在检索字符串的特定信息时遇到问题。
字符串如下:
20190502_PO_TEST.pdf
这包括 .pdf 部分。我需要检索最后一个下划线 (_) 和点 (.) 之间的部分,让我留下 TEST
我试过这个:
[^_]+$
然而,这会返回: 测试.PDF
我也试过这个:
_(.+)\.
这会返回: PO_TEST
【问题讨论】:
我在检索字符串的特定信息时遇到问题。
字符串如下:
20190502_PO_TEST.pdf
这包括 .pdf 部分。我需要检索最后一个下划线 (_) 和点 (.) 之间的部分,让我留下 TEST
我试过这个:
[^_]+$
然而,这会返回: 测试.PDF
我也试过这个:
_(.+)\.
这会返回: PO_TEST
【问题讨论】:
此模式 [^_]+$ 将不匹配字符串末尾的下划线,并且还将匹配 .
在这种模式_(.+). 中,您必须转义点以匹配它,就像_(.+)\. 一样,请参阅demo,然后您的匹配项将在第一个捕获组中。
你还可以使用什么:
^.*_\K[^.]+
^.*_匹配最后一个下划线\K忘记匹配的内容[^.]+ 匹配 0+ 次而不是一个点【讨论】:
^.*_\K[^._]*
_和.之间的空字符串:_<emptystring>.
^.*_\K[^.]*。您可以从字符类中删除多余的_,因为您已经匹配了最后一个下划线。