[英]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
您可以使用此正则表达式:
[^_.]+(?=[^_]*$
这样的东西?
_([^_\.]+)\..*$
您在询问它“在字符串末尾之前不是_的所有内容”。 类似于以下内容: _([^_.]+)\\..*$
这将导致group(1)包含最后一个_和。之间的所有内容,但它需要有一个。 和_。
如果需要允许字符串丢失。 或_,您可以使用_?([^_.]+)(\\..*)?$
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.