繁体   English   中英

上次出现的字符和另一个字符之间的正则表达式匹配

[英]Regex matching between last occurence of character and another character

您好,我正在尝试从正则表达式中获得以下结果。 我需要最后一次出现的"_"和句点之间的字符。 我有这个正则表达式[^_]+$但最后没有摆脱".pdf"

所需的输出

原始字符串:SalesOrder_359959_929058.pdf正则表达式之后:929058

尝试这个:

([^_.]+)\.

这将匹配_或以外的任何一个或多个字符. 第1组中的,然后是. 然后,您只需提取组1即可获得所需的子字符串。

如果您的正则表达式引擎支持先行,则还可以使用以下命令:

[^_.]+(?=\.)

这将匹配_或以外的任何一个或多个字符. 只要紧随其后是. 但是. 本身未被捕获。

当然,如果您有多个方法,则这两种方法都可能失败. 在你的字符串中。 在这种情况下,您可能会使用以下内容:

([^_.]+)\.[^_.]*$

或这个:

[^_.]+(?=\.[^_.]*$)

这只是另一种观点!

我认为如果格式始终相同:

letters_numbers_numbers.extension

你可以做类似的事情

string[] splits = text.Replace(".", "_").Split('_');
return splits[splits.Length - 2];

输出:

929058

您可以使用此正则表达式:

[^_.]+(?=[^_]*$

这样的东西?

_([^_\.]+)\..*$

如果您的正则表达式引擎支持先行,则可以使用以下命令:

[^_]+(?=\.)

工作正则表达式示例:

http://regex101.com/r/rZ9qQ6

您在询问它“在字符串末尾之前不是_的所有内容”。 类似于以下内容: _([^_.]+)\\..*$这将导致group(1)包含最后一个_和。之间的所有内容,但它需要有一个。 和_。

如果需要允许字符串丢失。 或_,您可以使用_?([^_.]+)(\\..*)?$

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM